From 42a695217d62633c8975cb0b9d4cce8ff4df681e Mon Sep 17 00:00:00 2001 From: Sorena Sarabadani Date: Sun, 25 Jan 2026 20:48:50 +0100 Subject: [PATCH 1/5] feat: limit searching issues based on type --- .../kohsuke/github/GHIssueSearchBuilder.java | 31 + src/test/java/org/kohsuke/github/AppTest.java | 38 + .../__files/1-user.json | 36 + .../__files/2-search_issues.json | 2596 ++++++++++++++++ .../__files/3-search_issues.json | 2596 ++++++++++++++++ .../__files/4-search_issues.json | 2652 ++++++++++++++++ .../__files/5-search_issues.json | 2634 ++++++++++++++++ .../__files/6-search_issues.json | 2709 ++++++++++++++++ .../__files/7-search_issues.json | 2739 +++++++++++++++++ .../__files/8-search_issues.json | 1218 ++++++++ .../mappings/1-user.json | 48 + .../mappings/2-search_issues.json | 50 + .../mappings/3-search_issues.json | 49 + .../mappings/4-search_issues.json | 47 + .../mappings/5-search_issues.json | 47 + .../mappings/6-search_issues.json | 47 + .../mappings/7-search_issues.json | 47 + .../mappings/8-search_issues.json | 47 + .../__files/1-user.json | 36 + .../__files/2-search_issues.json | 1239 ++++++++ .../__files/3-search_issues.json | 1239 ++++++++ .../mappings/1-user.json | 48 + .../mappings/2-search_issues.json | 49 + .../mappings/3-search_issues.json | 48 + 24 files changed, 20290 insertions(+) create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/1-user.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/2-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/3-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/4-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/5-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/6-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/7-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/8-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/1-user.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/2-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/3-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/4-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/5-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/6-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/7-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/8-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/1-user.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/2-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/3-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/1-user.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/2-search_issues.json create mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/3-search_issues.json diff --git a/src/main/java/org/kohsuke/github/GHIssueSearchBuilder.java b/src/main/java/org/kohsuke/github/GHIssueSearchBuilder.java index 3967691ac3..05439b4ea8 100644 --- a/src/main/java/org/kohsuke/github/GHIssueSearchBuilder.java +++ b/src/main/java/org/kohsuke/github/GHIssueSearchBuilder.java @@ -57,6 +57,15 @@ public GHIssueSearchBuilder isClosed() { return q("is:closed"); } + /** + * Filters results to only include issues (excludes pull requests). + * + * @return the gh issue search builder + */ + public GHIssueSearchBuilder isIssue() { + return q("is:issue"); + } + /** * Is merged gh issue search builder. * @@ -75,6 +84,15 @@ public GHIssueSearchBuilder isOpen() { return q("is:open"); } + /** + * Filters results to only include pull requests (excludes issues). + * + * @return the gh issue search builder + */ + public GHIssueSearchBuilder isPullRequest() { + return q("is:pr"); + } + /** * Mentions gh issue search builder. * @@ -121,6 +139,19 @@ public GHIssueSearchBuilder q(String term) { return this; } + /** + * Filters results to a specific repository. + * + * @param owner + * the repository owner + * @param name + * the repository name + * @return the gh issue search builder + */ + public GHIssueSearchBuilder repo(String owner, String name) { + return q("repo:" + owner + "/" + name); + } + /** * Sort gh issue search builder. * diff --git a/src/test/java/org/kohsuke/github/AppTest.java b/src/test/java/org/kohsuke/github/AppTest.java index cb59f2af62..9782c8f438 100755 --- a/src/test/java/org/kohsuke/github/AppTest.java +++ b/src/test/java/org/kohsuke/github/AppTest.java @@ -855,6 +855,44 @@ public void testIssueSearch() { } } + /** + * Test issue search with isIssue filter to exclude pull requests. + */ + @Test + public void testIssueSearchIssuesOnly() { + PagedSearchIterable r = gitHub.searchIssues() + .repo("hub4j", "github-api") + .isIssue() + .isOpen() + .sort(GHIssueSearchBuilder.Sort.UPDATED) + .list(); + assertThat(r.getTotalCount(), greaterThan(0)); + for (GHIssue issue : r) { + assertThat(issue.getTitle(), notNullValue()); + // Verify it's not a PR (pull_request field should be null) + assertThat(issue.getPullRequest(), nullValue()); + } + } + + /** + * Test issue search with isPullRequest filter to only return pull requests. + */ + @Test + public void testIssueSearchPullRequestsOnly() { + PagedSearchIterable r = gitHub.searchIssues() + .repo("hub4j", "github-api") + .isPullRequest() + .isOpen() + .sort(GHIssueSearchBuilder.Sort.UPDATED) + .list(); + assertThat(r.getTotalCount(), greaterThan(0)); + for (GHIssue issue : r) { + assertThat(issue.getTitle(), notNullValue()); + // Verify it's a PR (pull_request field should not be null) + assertThat(issue.getPullRequest(), notNullValue()); + } + } + /** * Test issue with comment. * diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/1-user.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/1-user.json new file mode 100644 index 0000000000..fbc5eae788 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/1-user.json @@ -0,0 +1,36 @@ +{ + "login": "Anonycoders", + "id": 40047636, + "node_id": "MDQ6VXNlcjQwMDQ3NjM2", + "avatar_url": "https://avatars.githubusercontent.com/u/40047636?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Anonycoders", + "html_url": "https://github.com/Anonycoders", + "followers_url": "https://api.github.com/users/Anonycoders/followers", + "following_url": "https://api.github.com/users/Anonycoders/following{/other_user}", + "gists_url": "https://api.github.com/users/Anonycoders/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Anonycoders/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Anonycoders/subscriptions", + "organizations_url": "https://api.github.com/users/Anonycoders/orgs", + "repos_url": "https://api.github.com/users/Anonycoders/repos", + "events_url": "https://api.github.com/users/Anonycoders/events{/privacy}", + "received_events_url": "https://api.github.com/users/Anonycoders/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false, + "name": "Sorena Sarabadani", + "company": "@Adevinta", + "blog": "", + "location": "Berlin, Germany", + "email": "sorena.sarabadani@gmail.com", + "hireable": null, + "bio": "Ex-Shopifyer - Adevinta/Kleinanzeigen", + "twitter_username": "sorena_s", + "notification_email": "sorena.sarabadani@gmail.com", + "public_repos": 12, + "public_gists": 0, + "followers": 38, + "following": 4, + "created_at": "2018-06-08T02:07:15Z", + "updated_at": "2026-01-24T22:07:12Z" +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/2-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/2-search_issues.json new file mode 100644 index 0000000000..70588b20a1 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/2-search_issues.json @@ -0,0 +1,2596 @@ +{ + "total_count": 164, + "incomplete_results": false, + "items": [ + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2181", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/events", + "html_url": "https://github.com/hub4j/github-api/issues/2181", + "id": 3843541321, + "node_id": "I_kwDOAAlq-s7lF8lJ", + "number": 2181, + "title": "[Feature request] Expose Co-Authored-By Metadata in Commit API", + "user": { + "login": "yeikel", + "id": 8935151, + "node_id": "MDQ6VXNlcjg5MzUxNTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/8935151?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yeikel", + "html_url": "https://github.com/yeikel", + "followers_url": "https://api.github.com/users/yeikel/followers", + "following_url": "https://api.github.com/users/yeikel/following{/other_user}", + "gists_url": "https://api.github.com/users/yeikel/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yeikel/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yeikel/subscriptions", + "organizations_url": "https://api.github.com/users/yeikel/orgs", + "repos_url": "https://api.github.com/users/yeikel/repos", + "events_url": "https://api.github.com/users/yeikel/events{/privacy}", + "received_events_url": "https://api.github.com/users/yeikel/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + }, + { + "id": 1686292366, + "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", + "name": "more information needed", + "color": "9ce1ed", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-01-22T15:48:48Z", + "updated_at": "2026-01-24T21:57:18Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Use Case:** \n\nIdentify all contributors to a commit, including those listed as `Co-Authored-By` in the commit message footer. Currently, the API exposes only the main author and committer, but not co-authors.\n\n```java\n var userEmail = commit.getAuthor().getEmail();\n var commiterEmail = commit.getCommitter().getEmail();\n // How to get the co-author with this API? \n```\n\n**Proposed Solution:** \n- Add a method to `GHCommit` (or similar) that returns a list of co-authors parsed from the commit message.\n- Optionally, provide a structured representation (e.g., name and email) for each co-author.\n\n**Example API:**\n```java\nList getCoAuthors();\n```\n\n\n**References:** \n\nhttps://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors#creating-co-authored-commits-on-the-command-line\n\n**Note to maintainers:** \n\nApologies if this is currently possible, please share any snippet if you can. Thank you in advance! ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2181/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2166", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/events", + "html_url": "https://github.com/hub4j/github-api/issues/2166", + "id": 3668649747, + "node_id": "I_kwDOAAlq-s7aqycT", + "number": 2166, + "title": "Compatibility issue with Jackson 2.20 and above", + "user": { + "login": "yeikel", + "id": 8935151, + "node_id": "MDQ6VXNlcjg5MzUxNTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/8935151?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yeikel", + "html_url": "https://github.com/yeikel", + "followers_url": "https://api.github.com/users/yeikel/followers", + "following_url": "https://api.github.com/users/yeikel/following{/other_user}", + "gists_url": "https://api.github.com/users/yeikel/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yeikel/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yeikel/subscriptions", + "organizations_url": "https://api.github.com/users/yeikel/orgs", + "repos_url": "https://api.github.com/users/yeikel/repos", + "events_url": "https://api.github.com/users/yeikel/events{/privacy}", + "received_events_url": "https://api.github.com/users/yeikel/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2025-11-26T18:38:53Z", + "updated_at": "2026-01-15T04:18:43Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\n\nI am trying to use the project along with Jackson 2.20.1 but it fails at runtime with the following issue while creating the mapper \n\n```\nException in thread \"main\" java.lang.NoSuchFieldError: Class com.fasterxml.jackson.databind.PropertyNamingStrategy does not have member field 'com.fasterxml.jackson.databind.PropertyNamingStrategy SNAKE_CASE'\n\tat org.kohsuke.github.GitHubClient.(GitHubClient.java:98)\n```\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Configure a project and add Jackson 2.20.1 to the classpath\n2. Try to create a new client\n\n\n**Expected behavior**\n\nThe client is created \n\n**Actual behavior**\n\nIt fails because it cannot find `PropertyNamingStrategy SNAKE_CASE` which no longer exists\n\n**Desktop (please complete the following information):**\n\n - Version: 2.0-rc.5\n\n**Additional context**\n\nUsage: https://github.com/hub4j/github-api/blob/9e09d67fbb35808abc0782e7d0cbf4b6e64a94de/src/main/java/org/kohsuke/github/GitHubClient.java#L124\n\nThis feature was dropped in Jackson 2.20. Using Jackson 2.19.4 works for now but it is not a long term solution\n\nSee https://github.com/FasterXML/jackson-databind/commit/4d2083160fef06e6063a3082f0fdaab8c2803793\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2166/reactions", + "total_count": 3, + "+1": 3, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2172", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/events", + "html_url": "https://github.com/hub4j/github-api/issues/2172", + "id": 3695344435, + "node_id": "I_kwDOAAlq-s7cQnsz", + "number": 2172, + "title": "GitHubSanityCachedValue can block whole application", + "user": { + "login": "alexec", + "id": 1142830, + "node_id": "MDQ6VXNlcjExNDI4MzA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1142830?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/alexec", + "html_url": "https://github.com/alexec", + "followers_url": "https://api.github.com/users/alexec/followers", + "following_url": "https://api.github.com/users/alexec/following{/other_user}", + "gists_url": "https://api.github.com/users/alexec/gists{/gist_id}", + "starred_url": "https://api.github.com/users/alexec/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/alexec/subscriptions", + "organizations_url": "https://api.github.com/users/alexec/orgs", + "repos_url": "https://api.github.com/users/alexec/repos", + "events_url": "https://api.github.com/users/alexec/events{/privacy}", + "received_events_url": "https://api.github.com/users/alexec/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2025-12-04T16:12:07Z", + "updated_at": "2025-12-16T15:38:13Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "\nThe `GitHubSanityCachedValue` class contains a single shared lock. This means that client to this class can be blocked by another user of the function. \n\nInstead, it might be better to use a read/write lock.\n\n\nhttps://github.com/hub4j/github-api/blob/9e09d67fbb35808abc0782e7d0cbf4b6e64a94de/src/main/java/org/kohsuke/github/GitHubSanityCachedValue.java#L11 ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2172/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2010", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/events", + "html_url": "https://github.com/hub4j/github-api/issues/2010", + "id": 2792856326, + "node_id": "I_kwDOAAlq-s6md5sG", + "number": 2010, + "title": "Support new issue types", + "user": { + "login": "Haarolean", + "id": 1494347, + "node_id": "MDQ6VXNlcjE0OTQzNDc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Haarolean", + "html_url": "https://github.com/Haarolean", + "followers_url": "https://api.github.com/users/Haarolean/followers", + "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", + "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", + "organizations_url": "https://api.github.com/users/Haarolean/orgs", + "repos_url": "https://api.github.com/users/Haarolean/repos", + "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", + "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2025-01-16T13:57:43Z", + "updated_at": "2025-11-12T23:19:16Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Github introduced new enhancements to issues: issue types, sub-issues, and other minor issues. It seems like they're forcing these issue types by default now, the field is visible even if you don't want to use it, my guess is it will be a default soon.\nSo it makes sense to implement this kind of API.\n\nhttps://github.blog/changelog/2025-01-13-evolving-github-issues-public-preview/\nWhile it's stated that it's in \"preview\", they've already started rolling it out actively without opting in.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2010/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2156", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/events", + "html_url": "https://github.com/hub4j/github-api/issues/2156", + "id": 3574234743, + "node_id": "I_kwDOAAlq-s7VCn53", + "number": 2156, + "title": "Enterprise installations not recognized (throws an Exception)", + "user": { + "login": "boriel", + "id": 1433137, + "node_id": "MDQ6VXNlcjE0MzMxMzc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1433137?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/boriel", + "html_url": "https://github.com/boriel", + "followers_url": "https://api.github.com/users/boriel/followers", + "following_url": "https://api.github.com/users/boriel/following{/other_user}", + "gists_url": "https://api.github.com/users/boriel/gists{/gist_id}", + "starred_url": "https://api.github.com/users/boriel/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/boriel/subscriptions", + "organizations_url": "https://api.github.com/users/boriel/orgs", + "repos_url": "https://api.github.com/users/boriel/repos", + "events_url": "https://api.github.com/users/boriel/events{/privacy}", + "received_events_url": "https://api.github.com/users/boriel/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-10-31T10:01:12Z", + "updated_at": "2025-11-12T23:16:45Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Description of the bug**\nWhen listing installations for a given App ID, the deserialization of the JSON response fails with the exception:\n```\nhudson.remoting.ProxyException: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `org.kohsuke.github.GHTargetType` from String \"Enterprise\": not one of the values accepted for Enum class: [ORGANIZATION, USER]\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 756] (through reference chain: java.lang.Object[][0]->org.kohsuke.github.GHAppInstallation[\"target_type\"])\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1959)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:1245)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.EnumDeserializer._deserializeAltString(EnumDeserializer.java:447)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.EnumDeserializer._fromString(EnumDeserializer.java:304)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.EnumDeserializer.deserialize(EnumDeserializer.java:273)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:138)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:399)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:218)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2131)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1566)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubResponse.parseBody(GitHubResponse.java:104)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubPageIterator.lambda$fetch$0(GitHubPageIterator.java:147)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubClient.createResponse(GitHubClient.java:679)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:466)\nCaused: hudson.remoting.ProxyException: org.kohsuke.github.HttpException: Server returned HTTP response code: 200, message: 'null' for URL: [https://api.github.com/app/installati](https://api.github.com/app/installations)\n ...\n```\n\n**To Reproduce**\nTo reproduce:\n\n 1. Install a GitHub App at the enterprise level (this is a rather new feature)\n 1. do an api call to\n[https://api.github.com/app/installations](https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#list-installations-for-the-authenticated-app)\n \nThe `target_type` field will be `\"Enterprise\"` in one of the installations returned, and the deserialization will fail.\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\nJust return the deserialized content with this new `target_type`\n\n**Desktop (please complete the following information):**\n Does not apply\n\n**Additional context**\nFixing this will require adding the `ENTERPRISE` type to the `GHTargetType` Enum here:\nhttps://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GHTargetType.java#L17", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2156/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2155", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/events", + "html_url": "https://github.com/hub4j/github-api/issues/2155", + "id": 3570367983, + "node_id": "I_kwDOAAlq-s7Uz33v", + "number": 2155, + "title": "[Feature request] Support matching-refs API", + "user": { + "login": "krzema12", + "id": 3110813, + "node_id": "MDQ6VXNlcjMxMTA4MTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/3110813?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/krzema12", + "html_url": "https://github.com/krzema12", + "followers_url": "https://api.github.com/users/krzema12/followers", + "following_url": "https://api.github.com/users/krzema12/following{/other_user}", + "gists_url": "https://api.github.com/users/krzema12/gists{/gist_id}", + "starred_url": "https://api.github.com/users/krzema12/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/krzema12/subscriptions", + "organizations_url": "https://api.github.com/users/krzema12/orgs", + "repos_url": "https://api.github.com/users/krzema12/repos", + "events_url": "https://api.github.com/users/krzema12/events{/privacy}", + "received_events_url": "https://api.github.com/users/krzema12/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-10-30T11:39:29Z", + "updated_at": "2025-11-12T23:12:26Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "See https://docs.github.com/en/rest/git/refs?apiVersion=2022-11-28#list-matching-references. The endpoint is `/repos/{owner}/{repo}/git/matching-refs/{ref}`.\n\nThe goal of this endpoint is to list refs that match the given prefix. It's useful to avoid fetching all available refs.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2155/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2120", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/events", + "html_url": "https://github.com/hub4j/github-api/issues/2120", + "id": 3274944747, + "node_id": "I_kwDOAAlq-s7DM7Dr", + "number": 2120, + "title": "Bridged artifact publishing failed for 2.0-rc.4", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-07-29T20:45:38Z", + "updated_at": "2025-10-23T18:21:36Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "https://github.com/hub4j/github-api/actions/runs/16606284210\n\n```\n2025-07-29T20:24:21.7667363Z ##[group]Run mvn -B clean deploy -DskipTests -Prelease -Pbridged\n2025-07-29T20:24:21.7668059Z \u001b[36;1mmvn -B clean deploy -DskipTests -Prelease -Pbridged\u001b[0m\n2025-07-29T20:24:21.7696714Z shell: /usr/bin/bash -e {0}\n2025-07-29T20:24:21.7697147Z env:\n2025-07-29T20:24:21.7698515Z JAVA_11_PLUS_MAVEN_OPTS: --add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED\n2025-07-29T20:24:21.7700071Z JAVA_HOME: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/17.0.16-8/x64\n2025-07-29T20:24:21.7700782Z JAVA_HOME_17_X64: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/17.0.16-8/x64\n2025-07-29T20:24:21.7702295Z MAVEN_OPTS: --add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED\n2025-07-29T20:24:21.7704065Z MAVEN_USERNAME: ***\n2025-07-29T20:24:21.7704550Z MAVEN_PASSWORD: ***\n2025-07-29T20:24:21.7705067Z MAVEN_GPG_PASSPHRASE: ***\n2025-07-29T20:24:21.7705491Z ##[endgroup]\n2025-07-29T20:24:23.0228744Z [INFO] Scanning for projects...\n2025-07-29T20:24:23.9536099Z [WARNING] \n2025-07-29T20:24:23.9537453Z [WARNING] Some problems were encountered while building the effective model for org.kohsuke:github-api-bridged:jar:2.0-rc.4\n2025-07-29T20:24:23.9540996Z [WARNING] 'artifactId' contains an expression but should be a constant. @ org.kohsuke:${github-api.artifactId}:2.0-rc.4, /home/runner/work/github-api/github-api/pom.xml, line 5, column 15\n2025-07-29T20:24:23.9546247Z [WARNING] \n2025-07-29T20:24:23.9547681Z [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.\n2025-07-29T20:24:23.9556489Z [WARNING] \n2025-07-29T20:24:23.9559777Z [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.\n2025-07-29T20:24:23.9560985Z [WARNING] \n2025-07-29T20:24:23.9618771Z [INFO] Inspecting build with total of 1 modules...\n2025-07-29T20:24:23.9621326Z [INFO] Installing Nexus Staging features:\n2025-07-29T20:24:23.9623096Z [INFO] ... total of 1 executions of maven-deploy-plugin replaced with nexus-staging-maven-plugin\n2025-07-29T20:24:23.9709735Z [INFO] \n2025-07-29T20:24:23.9710932Z [INFO] -------------------< org.kohsuke:github-api-bridged >-------------------\n2025-07-29T20:24:23.9731357Z [INFO] Building GitHub API for Java 2.0-rc.4\n2025-07-29T20:24:23.9732242Z [INFO] from pom.xml\n2025-07-29T20:24:23.9733097Z [INFO] --------------------------------[ jar ]---------------------------------\n2025-07-29T20:24:24.1975820Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/com/infradna/tool/bridge-method-injector/1.31/bridge-method-injector-1.31.jar\n2025-07-29T20:24:24.9010193Z [INFO] Downloaded from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/com/infradna/tool/bridge-method-injector/1.31/bridge-method-injector-1.31.jar (20 kB at 29 kB/s)\n2025-07-29T20:24:25.2685425Z [INFO] \n2025-07-29T20:24:25.2688450Z [INFO] --- clean:3.2.0:clean (default-clean) @ github-api-bridged ---\n2025-07-29T20:24:25.3139513Z [INFO] Deleting /home/runner/work/github-api/github-api/target\n2025-07-29T20:24:25.3751804Z [INFO] \n2025-07-29T20:24:25.3755019Z [INFO] --- sortpom:4.0.0:verify (default) @ github-api-bridged ---\n2025-07-29T20:24:25.4004807Z [INFO] Verifying file /home/runner/work/github-api/github-api/pom.xml\n2025-07-29T20:24:25.5574156Z [INFO] \n2025-07-29T20:24:25.5604522Z [INFO] --- resources:3.3.1:copy-resources (copy-bridged-resources) @ github-api-bridged ---\n2025-07-29T20:24:25.6211373Z [INFO] Copying 2 resources from src/main/resources/META-INF/native-image/org.kohsuke/github-api to target/classes/META-INF/native-image/org.kohsuke/github-api-bridged\n2025-07-29T20:24:25.6257379Z [INFO] \n2025-07-29T20:24:25.6260843Z [INFO] --- resources:3.3.1:resources (default-resources) @ github-api-bridged ---\n2025-07-29T20:24:25.6298334Z [INFO] Copying 2 resources from src/main/resources to target/classes\n2025-07-29T20:24:25.6313090Z [INFO] \n2025-07-29T20:24:25.6316388Z [INFO] --- compiler:3.14.0:compile (default-compile) @ github-api-bridged ---\n2025-07-29T20:24:25.7492402Z [INFO] Recompiling the module because of changed source code.\n2025-07-29T20:24:25.7577343Z [INFO] Compiling 248 source files with javac [debug release 11] to target/classes\n2025-07-29T20:24:29.2601532Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/GitHubRequest.java: Some input files use or override a deprecated API.\n2025-07-29T20:24:29.2605584Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/GitHubRequest.java: Recompile with -Xlint:deprecation for details.\n2025-07-29T20:24:29.2645024Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/AbstractBuilder.java: Some input files use unchecked or unsafe operations.\n2025-07-29T20:24:29.2647447Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/AbstractBuilder.java: Recompile with -Xlint:unchecked for details.\n2025-07-29T20:24:29.2649001Z [INFO] \n2025-07-29T20:24:29.2649896Z [INFO] --- bridge-method-injector:1.31:process (default) @ github-api-bridged ---\n2025-07-29T20:24:29.2652007Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm/9.8/asm-9.8.pom\n2025-07-29T20:24:29.2949999Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.pom\n2025-07-29T20:24:29.3649367Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.pom (2.4 kB at 34 kB/s)\n2025-07-29T20:24:29.3683200Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.pom\n2025-07-29T20:24:29.3975186Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.pom\n2025-07-29T20:24:29.4137372Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.pom (2.8 kB at 186 kB/s)\n2025-07-29T20:24:29.4162498Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.pom\n2025-07-29T20:24:29.4335247Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.pom\n2025-07-29T20:24:29.4487718Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.pom (2.6 kB at 173 kB/s)\n2025-07-29T20:24:29.4537743Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm/9.8/asm-9.8.jar\n2025-07-29T20:24:29.4724836Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.jar\n2025-07-29T20:24:29.4726869Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.jar\n2025-07-29T20:24:29.5200408Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.jar\n2025-07-29T20:24:29.5581033Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.jar (126 kB at 3.3 MB/s)\n2025-07-29T20:24:29.5604951Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.jar\n2025-07-29T20:24:29.5607222Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.jar\n2025-07-29T20:24:29.5810217Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.jar (73 kB at 3.3 MB/s)\n2025-07-29T20:24:29.6160423Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.jar (52 kB at 911 kB/s)\n2025-07-29T20:24:29.7000553Z [INFO] \n2025-07-29T20:24:29.7004734Z [INFO] --- resources:3.3.1:testResources (default-testResources) @ github-api-bridged ---\n2025-07-29T20:24:29.8214547Z [INFO] Copying 80 resources from src/test/resources to target/test-classes\n2025-07-29T20:24:29.8321255Z [INFO] \n2025-07-29T20:24:29.8322203Z [INFO] --- compiler:3.14.0:testCompile (default-testCompile) @ github-api-bridged ---\n2025-07-29T20:24:29.8448238Z [INFO] Recompiling the module because of changed dependency.\n2025-07-29T20:24:29.8464047Z [INFO] Compiling 89 source files with javac [debug release 11] to target/test-classes\n2025-07-29T20:24:33.5592285Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/AbstractGHAppInstallationTest.java: Some input files use or override a deprecated API.\n2025-07-29T20:24:33.5595228Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/AbstractGHAppInstallationTest.java: Recompile with -Xlint:deprecation for details.\n2025-07-29T20:24:33.5597814Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/GitHubWireMockRule.java: Some input files use unchecked or unsafe operations.\n2025-07-29T20:24:33.5600435Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/GitHubWireMockRule.java: Recompile with -Xlint:unchecked for details.\n2025-07-29T20:24:33.5602352Z [INFO] \n2025-07-29T20:24:33.5605120Z [INFO] --- spring-boot:3.3.5:process-test-aot (process-test-aot) @ github-api-bridged ---\n2025-07-29T20:24:33.6745177Z [INFO] Skipping AOT test processing since tests are skipped\n2025-07-29T20:24:33.6751073Z [INFO] \n2025-07-29T20:24:33.6751944Z [INFO] --- surefire:3.5.3:test (default-test) @ github-api-bridged ---\n2025-07-29T20:24:33.7535969Z [INFO] Tests are skipped.\n2025-07-29T20:24:33.7536776Z [INFO] \n2025-07-29T20:24:33.7537563Z [INFO] --- jar:3.4.2:jar (default-jar) @ github-api-bridged ---\n2025-07-29T20:24:33.9589304Z [INFO] Building jar: /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:24:34.0705411Z [INFO] \n2025-07-29T20:24:34.0706287Z [INFO] --- javadoc:3.11.2:jar (attach-javadocs) @ github-api-bridged ---\n2025-07-29T20:24:34.5637285Z [INFO] No previous run data found, generating javadoc.\n2025-07-29T20:24:40.3755359Z [INFO] Building jar: /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:24:40.5876374Z [INFO] \n2025-07-29T20:24:40.5881032Z [INFO] --- source:3.3.1:jar-no-fork (attach-sources) @ github-api-bridged ---\n2025-07-29T20:24:40.7511753Z [INFO] Building jar: /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:24:40.8140859Z [INFO] \n2025-07-29T20:24:40.8142525Z [INFO] --- jacoco:0.8.12:prepare-agent-integration (default) @ github-api-bridged ---\n2025-07-29T20:24:40.8461770Z [INFO] jacoco.surefire.argLine set to -javaagent:/home/runner/.m2/repository/org/jacoco/org.jacoco.agent/0.8.12/org.jacoco.agent-0.8.12-runtime.jar=destfile=/home/runner/work/github-api/github-api/target/jacoco-it.exec,excludes=/org/kohsuke/github/example/*\n2025-07-29T20:24:40.8494367Z [INFO] \n2025-07-29T20:24:40.8495616Z [INFO] --- surefire:3.5.3:test (okhttp-test) @ github-api-bridged ---\n2025-07-29T20:24:40.8496881Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8497800Z [INFO] \n2025-07-29T20:24:40.8498984Z [INFO] --- surefire:3.5.3:test (httpclient-test-tracing) @ github-api-bridged ---\n2025-07-29T20:24:40.8524871Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8534351Z [INFO] \n2025-07-29T20:24:40.8535275Z [INFO] --- surefire:3.5.3:test (slow-or-flaky-test) @ github-api-bridged ---\n2025-07-29T20:24:40.8550533Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8557437Z [INFO] \n2025-07-29T20:24:40.8558398Z [INFO] --- surefire:3.5.3:test (slow-or-flaky-test-tracing) @ github-api-bridged ---\n2025-07-29T20:24:40.8572406Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8575439Z [INFO] \n2025-07-29T20:24:40.8576894Z [INFO] --- surefire:3.5.3:test (jwt0.11.x-test) @ github-api-bridged ---\n2025-07-29T20:24:40.8602410Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8608154Z [INFO] \n2025-07-29T20:24:40.8609090Z [INFO] --- spotless:2.44.5:check (spotless-check) @ github-api-bridged ---\n2025-07-29T20:24:41.2263304Z [INFO] Index file does not exist. Fallback to an empty index\n2025-07-29T20:24:46.6711821Z [INFO] Spotless.Java is keeping 337 files clean - 0 needs changes to be clean, 337 were already clean, 0 were skipped because caching determined they were already clean\n2025-07-29T20:24:46.6755549Z [INFO] \n2025-07-29T20:24:46.6756409Z [INFO] --- japicmp:0.23.1:cmp (default) @ github-api-bridged ---\n2025-07-29T20:24:46.8656192Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:24:46.8659827Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:24:46.8805000Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/maven-metadata.xml (379 B at 24 kB/s)\n2025-07-29T20:24:46.8950664Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/kohsuke/github-api-bridged/2.0-rc.3/github-api-bridged-2.0-rc.3.jar\n2025-07-29T20:24:46.9134198Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/2.0-rc.3/github-api-bridged-2.0-rc.3.jar\n2025-07-29T20:24:46.9714434Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/2.0-rc.3/github-api-bridged-2.0-rc.3.jar (653 kB at 11 MB/s)\n2025-07-29T20:24:47.4514453Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.diff'.\n2025-07-29T20:24:47.4782383Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.md'.\n2025-07-29T20:24:47.7245716Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.xml'.\n2025-07-29T20:24:47.7299099Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.html'.\n2025-07-29T20:24:47.7317925Z [INFO] \n2025-07-29T20:24:47.7318868Z [INFO] >>> spotbugs:4.9.3.0:check (run-spotbugs) > :spotbugs @ github-api-bridged >>>\n2025-07-29T20:24:47.7507293Z [INFO] \n2025-07-29T20:24:47.7508252Z [INFO] --- spotbugs:4.9.3.0:spotbugs (spotbugs) @ github-api-bridged ---\n2025-07-29T20:24:48.6436935Z [INFO] Fork Value is true\n2025-07-29T20:25:00.2299299Z [INFO] Done SpotBugs Analysis....\n2025-07-29T20:25:00.9449363Z [WARNING] Site model of 'org.kohsuke:github-api-bridged:jar:2.0-rc.4' for default locale is still using the old pre-version 2.0.0 model. You MUST migrate to the new model as soon as possible otherwise your build will break in the future!\n2025-07-29T20:25:00.9658654Z [INFO] Rendering content with org.kohsuke:maven-skin:jar:1.2 skin\n2025-07-29T20:25:01.4360715Z [INFO] \n2025-07-29T20:25:01.4361760Z [INFO] <<< spotbugs:4.9.3.0:check (run-spotbugs) < :spotbugs @ github-api-bridged <<<\n2025-07-29T20:25:01.4362774Z [INFO] \n2025-07-29T20:25:01.4363601Z [INFO] \n2025-07-29T20:25:01.4364417Z [INFO] --- spotbugs:4.9.3.0:check (run-spotbugs) @ github-api-bridged ---\n2025-07-29T20:25:01.4877054Z [INFO] BugInstance size is 0\n2025-07-29T20:25:01.4879822Z [INFO] Error size is 0\n2025-07-29T20:25:01.4886452Z [INFO] No errors/warnings found\n2025-07-29T20:25:01.4887183Z [INFO] \n2025-07-29T20:25:01.4887983Z [INFO] --- gpg:3.2.7:sign (sign-artifacts) @ github-api-bridged ---\n2025-07-29T20:25:01.5676590Z [INFO] Signer 'gpg' is signing 4 files with key default\n2025-07-29T20:25:02.5969472Z [INFO] \n2025-07-29T20:25:02.5970416Z [INFO] --- jacoco:0.8.12:report-integration (report) @ github-api-bridged ---\n2025-07-29T20:25:02.5998704Z [INFO] Skipping JaCoCo execution due to missing execution data file.\n2025-07-29T20:25:02.6000035Z [INFO] \n2025-07-29T20:25:02.6001071Z [INFO] --- jacoco:0.8.12:check (check) @ github-api-bridged ---\n2025-07-29T20:25:02.6069572Z [INFO] Skipping JaCoCo execution due to missing execution data file:/home/runner/work/github-api/github-api/target/jacoco-it.exec\n2025-07-29T20:25:02.6076175Z [INFO] \n2025-07-29T20:25:02.6077039Z [INFO] --- install:3.1.2:install (default-install) @ github-api-bridged ---\n2025-07-29T20:25:02.6323580Z [INFO] Installing /home/runner/work/github-api/github-api/pom.xml to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom\n2025-07-29T20:25:02.6332255Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:25:02.6355514Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:25:02.6376191Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:25:02.6386456Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc\n2025-07-29T20:25:02.6396073Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.pom.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc\n2025-07-29T20:25:02.6399252Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc\n2025-07-29T20:25:02.6402537Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc\n2025-07-29T20:25:02.6437367Z [INFO] \n2025-07-29T20:25:02.6438347Z [INFO] --- nexus-staging:1.7.0:deploy (injected-nexus-deploy) @ github-api-bridged ---\n2025-07-29T20:25:02.6570971Z [INFO] Performing local staging (local stagingDirectory=\"/home/runner/work/github-api/github-api/target/nexus-staging/staging\")...\n2025-07-29T20:25:02.6591567Z [INFO] + Using server credentials \"sonatype-nexus-staging\" from Maven settings.\n2025-07-29T20:25:03.4301873Z [INFO] * Connected to Nexus at https://ossrh-staging-api.central.sonatype.com:443/, is version 2.15.1-02 and edition \"Professional\"\n2025-07-29T20:25:03.6756020Z [INFO] * Using staging profile ID \"org.kohsuke\" (matched by Nexus).\n2025-07-29T20:25:03.6791917Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:25:03.6803873Z [INFO] Installing /home/runner/work/github-api/github-api/pom.xml to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom\n2025-07-29T20:25:03.6829619Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:25:03.6863148Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:25:03.6878197Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc\n2025-07-29T20:25:03.6892786Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.pom.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc\n2025-07-29T20:25:03.6906107Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc\n2025-07-29T20:25:03.6913739Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc\n2025-07-29T20:25:03.6922958Z [INFO] Performing remote staging...\n2025-07-29T20:25:03.6924739Z [INFO] \n2025-07-29T20:25:03.6926171Z [INFO] * Remote staging into staging profile ID \"org.kohsuke\"\n2025-07-29T20:25:04.0610456Z [INFO] * Created staging repository with ID \"org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17\".\n2025-07-29T20:25:04.0612663Z [INFO] * Staging repository at https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17\n2025-07-29T20:25:04.0614508Z [INFO] * Uploading locally staged artifacts to profile org.kohsuke\n2025-07-29T20:25:04.0659242Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc\n2025-07-29T20:25:04.6077033Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc (488 B at 900 B/s)\n2025-07-29T20:25:04.6081763Z [INFO] Downloading from sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:25:04.7329231Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:25:05.3348018Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/maven-metadata.xml (315 B at 523 B/s)\n2025-07-29T20:25:05.3364339Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc\n2025-07-29T20:25:05.6253859Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc (488 B at 1.7 kB/s)\n2025-07-29T20:25:05.6261209Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc\n2025-07-29T20:25:05.8646568Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc (488 B at 2.0 kB/s)\n2025-07-29T20:25:05.8654406Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:25:07.2160449Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar (2.4 MB at 1.8 MB/s)\n2025-07-29T20:25:07.2169227Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:25:08.0248105Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar (653 kB at 808 kB/s)\n2025-07-29T20:25:08.0251530Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom\n2025-07-29T20:25:08.7545703Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom (36 kB at 50 kB/s)\n2025-07-29T20:25:08.7558010Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:25:09.4824315Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar (381 kB at 524 kB/s)\n2025-07-29T20:25:09.4830753Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc\n2025-07-29T20:25:09.7329585Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc (488 B at 2.0 kB/s)\n2025-07-29T20:25:09.7332314Z [INFO] * Upload of locally staged artifacts finished.\n2025-07-29T20:25:09.7333893Z [INFO] * Closing staging repository with ID \"org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17\".\n2025-07-29T20:25:21.0027055Z [ERROR] Remote staging finished with a failure: 400 - Bad Request\n2025-07-29T20:25:21.0033011Z [INFO] ------------------------------------------------------------------------\n2025-07-29T20:25:21.0034141Z [INFO] BUILD FAILURE\n2025-07-29T20:25:21.0035177Z [INFO] ------------------------------------------------------------------------\n2025-07-29T20:25:21.0036666Z [INFO] Total time: 58.002 s\n2025-07-29T20:25:21.0037305Z [INFO] Finished at: 2025-07-29T20:25:21Z\n2025-07-29T20:25:21.0038257Z [INFO] ------------------------------------------------------------------------\n2025-07-29T20:25:21.0042398Z [ERROR] Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.7.0:deploy (injected-nexus-deploy) on project github-api-bridged: Remote staging failed: 400 - Bad Request -> [Help 1]\n2025-07-29T20:25:21.0044028Z [ERROR] \n2025-07-29T20:25:21.0044784Z [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.\n2025-07-29T20:25:21.0045816Z [ERROR] Re-run Maven using the -X switch to enable full debug logging.\n2025-07-29T20:25:21.0046617Z [ERROR] \n2025-07-29T20:25:21.0047546Z [ERROR] For more information about the errors and possible solutions, please read the following articles:\n2025-07-29T20:25:21.0048439Z [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException\n2025-07-29T20:25:21.0544587Z ##[error]Process completed with exit code 1.\n2025-07-29T20:25:21.0652621Z Post job cleanup.\n2025-07-29T20:25:21.2338798Z Removing private key from keychain\n2025-07-29T20:25:21.2639433Z Post job cleanup.\n2025-07-29T20:25:21.3579766Z [command]/usr/bin/git version\n2025-07-29T20:25:21.3623859Z git version 2.50.1\n2025-07-29T20:25:21.3669780Z Temporarily overriding HOME='/home/runner/work/_temp/f63c6d9c-0210-4993-9eab-7c153795d64a' before making global git config changes\n2025-07-29T20:25:21.3671649Z Adding repository directory to the temporary git global config as a safe directory\n2025-07-29T20:25:21.3685669Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/github-api/github-api\n2025-07-29T20:25:21.3725232Z [command]/usr/bin/git config --local --name-only --get-regexp core\\.sshCommand\n2025-07-29T20:25:21.3760717Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'core\\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :\"\n2025-07-29T20:25:21.4023643Z [command]/usr/bin/git config --local --name-only --get-regexp http\\.https\\:\\/\\/github\\.com\\/\\.extraheader\n2025-07-29T20:25:21.4049117Z http.https://github.com/.extraheader\n2025-07-29T20:25:21.4062530Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader\n2025-07-29T20:25:21.4096473Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'http\\.https\\:\\/\\/github\\.com\\/\\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :\"\n2025-07-29T20:25:21.4481669Z Cleaning up orphan processes\n```", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2120/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2145", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/events", + "html_url": "https://github.com/hub4j/github-api/issues/2145", + "id": 3451557731, + "node_id": "I_kwDOAAlq-s7Nupdj", + "number": 2145, + "title": "How to extract the dependencies of a repository?", + "user": { + "login": "tohidemyname", + "id": 42423544, + "node_id": "MDQ6VXNlcjQyNDIzNTQ0", + "avatar_url": "https://avatars.githubusercontent.com/u/42423544?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/tohidemyname", + "html_url": "https://github.com/tohidemyname", + "followers_url": "https://api.github.com/users/tohidemyname/followers", + "following_url": "https://api.github.com/users/tohidemyname/following{/other_user}", + "gists_url": "https://api.github.com/users/tohidemyname/gists{/gist_id}", + "starred_url": "https://api.github.com/users/tohidemyname/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/tohidemyname/subscriptions", + "organizations_url": "https://api.github.com/users/tohidemyname/orgs", + "repos_url": "https://api.github.com/users/tohidemyname/repos", + "events_url": "https://api.github.com/users/tohidemyname/events{/privacy}", + "received_events_url": "https://api.github.com/users/tohidemyname/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2025-09-25T02:12:02Z", + "updated_at": "2025-10-23T18:12:16Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I notice that Github has a rest api to retrieve the dependencies of a repository:\n\nhttps://docs.github.com/en/rest/dependency-graph/sboms?apiVersion=2022-11-28#export-a-software-bill-of-materials-sbom-for-a-repository\n\nHowever, I did not find a corresponding API call in github-api. I tried to implement the api by myself:\n\n```\npublic List getDependGraph() throws IOException {\n\t\tDependence[] list = root().createRequest()\n\t .withUrlPath(getApiTailUrl(\"dependency-graph/sbom\"))\n\t .fetch(Dependence[].class);\n\t return Arrays.asList(list);\n\t\t\n\t}\n```\n\nThe above code returns a 404 error:\n\n```\norg.kohsuke.github.GHFileNotFoundException: https://api.github.com/repos/sgtest/pinned-lucene/stats/dependency-graph/sbom {\n \"message\": \"Not Found\",\n \"documentation_url\": \"https://docs.github.com/rest\",\n \"status\": \"404\"\n}\n```\n\nI tried to call the url:\n`https://api.github.com/repos/sgtest/pinned-lucene/stats/dependency-graph/sbom`\n\nIt also returns a 404 error. \n\nIs this a problem in Github? Would you please give me some suggestions on how to implement the API for github-api?", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2145/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2106", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/events", + "html_url": "https://github.com/hub4j/github-api/issues/2106", + "id": 3128804786, + "node_id": "I_kwDOAAlq-s66fcWy", + "number": 2106, + "title": "GHPullRequestReviewComment.getLine() always returns -1", + "user": { + "login": "tsantalis", + "id": 1483516, + "node_id": "MDQ6VXNlcjE0ODM1MTY=", + "avatar_url": "https://avatars.githubusercontent.com/u/1483516?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/tsantalis", + "html_url": "https://github.com/tsantalis", + "followers_url": "https://api.github.com/users/tsantalis/followers", + "following_url": "https://api.github.com/users/tsantalis/following{/other_user}", + "gists_url": "https://api.github.com/users/tsantalis/gists{/gist_id}", + "starred_url": "https://api.github.com/users/tsantalis/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/tsantalis/subscriptions", + "organizations_url": "https://api.github.com/users/tsantalis/orgs", + "repos_url": "https://api.github.com/users/tsantalis/repos", + "events_url": "https://api.github.com/users/tsantalis/events{/privacy}", + "received_events_url": "https://api.github.com/users/tsantalis/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-06-09T00:16:26Z", + "updated_at": "2025-10-23T18:06:05Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\nGHPullRequestReviewComment.getLine() API does not return accurate value.\nAs a matter of fact it always returns -1\n\n**To Reproduce**\nSteps to reproduce the behavior:\nFor the following PR review comment the line is 422\nhttps://api.github.com/repos/JabRef/jabref/pulls/comments/2127829134\n```java\n//PR URL: https://github.com/JabRef/jabref/pull/11845\nGHRepository repository = ...;\nGHPullRequest pullRequest = repository.getPullRequest(11845);\nPagedIterable reviews = pullRequest.listReviews();\n\nfor (GHPullRequestReview review : reviews) {\n PagedIterable comments = review.listReviewComments();\n for (GHPullRequestReviewComment comment : comments) {\n String path = comment.getPath();\n int lineNumber = comment.getLine();\n }\n}\n```\n\n**Expected behavior**\nThe line number for\nhttps://api.github.com/repos/JabRef/jabref/pulls/comments/2127829134\nshould be 422 instead of -1\n\n**Desktop (please complete the following information):**\n - OS: iOS\n - Browser [Firefox]\n - Version [139]\n\n**Additional context**\nAdd any other context about the problem here.\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2106/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2126", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/events", + "html_url": "https://github.com/hub4j/github-api/issues/2126", + "id": 3327323318, + "node_id": "I_kwDOAAlq-s7GUuy2", + "number": 2126, + "title": "Update documentation on pluggable Http Client ", + "user": { + "login": "ErrorxCode", + "id": 65817230, + "node_id": "MDQ6VXNlcjY1ODE3MjMw", + "avatar_url": "https://avatars.githubusercontent.com/u/65817230?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ErrorxCode", + "html_url": "https://github.com/ErrorxCode", + "followers_url": "https://api.github.com/users/ErrorxCode/followers", + "following_url": "https://api.github.com/users/ErrorxCode/following{/other_user}", + "gists_url": "https://api.github.com/users/ErrorxCode/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ErrorxCode/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ErrorxCode/subscriptions", + "organizations_url": "https://api.github.com/users/ErrorxCode/orgs", + "repos_url": "https://api.github.com/users/ErrorxCode/repos", + "events_url": "https://api.github.com/users/ErrorxCode/events{/privacy}", + "received_events_url": "https://api.github.com/users/ErrorxCode/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 2070644911, + "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", + "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", + "name": "documentation", + "color": "6ee5cb", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-08-16T14:21:39Z", + "updated_at": "2025-10-23T18:02:32Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "The Library uses Java HttpClient, which was removed in Android 7. Using this library on > Android 7 results in the following error:\n\n`NoClassDefFoundError: Failed resolution of: Ljava/net/http/HttpClient;`\n\n\n**To Reproduce**\nRun `GitHub.connectUsingOAuth()` on android (API > 24)\n\n**Expected behaviour**\nNo error, connection established\n\n**Desktop (please complete the following information):**\n - OS: Android\n - Version 16\n\n\nPlease migrate from java **HttpClient** to OkHttp to keep wider support", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2126/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2009", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/events", + "html_url": "https://github.com/hub4j/github-api/issues/2009", + "id": 2789691143, + "node_id": "I_kwDOAAlq-s6mR08H", + "number": 2009, + "title": "`GitHubAbuseLimitHandler#isError` fails to detect some secondary rate limit errors", + "user": { + "login": "yrodiere", + "id": 412878, + "node_id": "MDQ6VXNlcjQxMjg3OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/412878?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yrodiere", + "html_url": "https://github.com/yrodiere", + "followers_url": "https://api.github.com/users/yrodiere/followers", + "following_url": "https://api.github.com/users/yrodiere/following{/other_user}", + "gists_url": "https://api.github.com/users/yrodiere/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yrodiere/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yrodiere/subscriptions", + "organizations_url": "https://api.github.com/users/yrodiere/orgs", + "repos_url": "https://api.github.com/users/yrodiere/repos", + "events_url": "https://api.github.com/users/yrodiere/events{/privacy}", + "received_events_url": "https://api.github.com/users/yrodiere/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 9, + "created_at": "2025-01-15T12:24:43Z", + "updated_at": "2025-09-05T19:31:30Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "(Maintainer's note: see also #1975 )\n**Describe the bug**\n\n#1895 attempted to detect more errors related to secondary rate limits, but it seems there are more.\n\nIt appears GitHub APIs -- https://api.github.com/search/issues in particular, maybe more -- can hit a secondary limit and just return a 403 error, with no particular header indicating that a limit was reached. No `Retry-After`, no `gh-limited-by`, nothing. Only the body response explains \"You have exceeded a secondary rate limit. Please wait a few minutes before you try again\". (and in fact waiting 30s/1min is enough).\n\nThis, understandably, doesn't get caught by `GitHubAbuseLimitHandler#isError`, and results in the request simply failing.\n\n**To Reproduce**\n\nSend the following request a few dozen times (or just a dozen when unauthenticated):\n\nhttps://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581\n\nObviously my actual use case is not to send the _same_ request over and over, but it's enough to reproduce the problem.\n\nInterestingly, you can just click that URL in your browser, refresh quickly a couple times, and you'll be able to observe the exact error I'm running into: HTTP 403 with no particular retry header.\n\nSee bottom of this messsage for more logs.\n\n**Expected behavior**\n\nIdeally, I'd expect such requests to be detected as secondary rate limit errors, and the client to just wait and retry. For my use case it's fine to wait a minute.\n\nFailing that, I'd settle for a way to override `GitHubAbuseLimitHandler#isError` and implement some dirty logic based on the response body in there. But this method is currently package-protected.\n\n**Desktop (please complete the following information):**\n - OS: Fedora 41\n - Browser [e.g. chrome, safari]: no browser involved\n - Version [e.g. 22]: no browser involved\n\n**Additional context**\n\nHere is a failing request/response with all details/headers. I got it using `-Djdk.httpclient.HttpClient.log=all`.\n\n```\n2025-01-15 13:04:53,295 INFO [jdk.htt.HttpClient] (executor-thread-1) REQUEST: https://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581 GET\n2025-01-15 13:04:53,295 INFO [jdk.htt.HttpClient] (executor-thread-1) HEADERS: REQUEST HEADERS:\nGET /search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581 HTTP/1.1\nContent-Length: 0\nHost: api.github.com\nUser-Agent: Java-http-client/17.0.13\nAccept: application/vnd.github+json\nAccept-Encoding: gzip\nAuthorization: token \nX-GitHub-Api-Version: 2022-11-28\n\n\n2025-01-15 13:04:53,422 INFO [jdk.htt.HttpClient] (HttpClient-3-Worker-0) HEADERS: RESPONSE HEADERS:\n access-control-allow-origin: *\n access-control-expose-headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset\n content-encoding: gzip\n content-security-policy: default-src 'none'\n content-type: application/json; charset=utf-8\n date: Wed, 15 Jan 2025 12:04:53 GMT\n referrer-policy: origin-when-cross-origin, strict-origin-when-cross-origin\n server: github.com\n strict-transport-security: max-age=31536000; includeSubdomains; preload\n transfer-encoding: chunked\n vary: Accept-Encoding, Accept, X-Requested-With\n x-content-type-options: nosniff\n x-frame-options: deny\n x-github-api-version-selected: 2022-11-28\n x-github-media-type: github.v3; format=json\n x-github-request-id: \n x-ratelimit-limit: 30\n x-ratelimit-remaining: 21\n x-ratelimit-reset: 1736942747\n x-ratelimit-resource: search\n x-ratelimit-used: 9\n x-xss-protection: 0\n\n\n2025-01-15 13:04:53,423 INFO [jdk.htt.HttpClient] (HttpClient-3-Worker-0) RESPONSE: (GET https://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581) 403 HTTP_1_1 Local port: 57158\n```\n\nI end up with this error, proving the secondary limit error wasn't detected:\n\n```\norg.kohsuke.github.GHException: Failed to retrieve https://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581\n at org.kohsuke.github.GitHubPageIterator.fetch(GitHubPageIterator.java:157)\n at org.kohsuke.github.GitHubPageIterator.hasNext(GitHubPageIterator.java:93)\n at org.kohsuke.github.PagedSearchIterable$1.hasNext(PagedSearchIterable.java:111)\n at org.kohsuke.github.PagedIterator.fetch(PagedIterator.java:116)\n at org.kohsuke.github.PagedIterator.hasNext(PagedIterator.java:84)\n at java.base/java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1855)\n at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.lambda$initPartialTraversalState$0(StreamSpliterators.java:292)\n at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(StreamSpliterators.java:206)\n at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(StreamSpliterators.java:161)\n at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:298)\n at java.base/java.util.Spliterators$1Adapter.hasNext(Spliterators.java:681)\n at io.quarkus.github.lottery.draw.Lottery$Draw.runSingleRound(Lottery.java:286)\n at io.quarkus.github.lottery.draw.Lottery.draw(Lottery.java:80)\n at io.quarkus.github.lottery.LotteryService.doDrawForRepository(LotteryService.java:109)\n at io.quarkus.github.lottery.LotteryService.drawForRepository(LotteryService.java:82)\n at io.quarkus.github.lottery.LotteryService.draw(LotteryService.java:66)\n at io.quarkus.github.lottery.LotteryService_ClientProxy.draw(Unknown Source)\n at io.quarkus.github.lottery.LotteryCli$DrawCommand.run(LotteryCli.java:27)\n at io.quarkus.github.lottery.LotteryCliCommandDispatcherImpl.dispatch(Unknown Source)\n at io.quarkus.github.lottery.LotteryCliCommandDispatcherImpl_Multiplexer.dispatch_9c21b751bd1c3c76c9e9f8d4cbcacbc05e9e7ed7(Unknown Source)\n at io.quarkus.github.lottery.LotteryCliCommandDispatcherImpl_Multiplexer_Observer_dispatch_9c21b751bd1c3c76c9e9f8d4cbcacbc05e9e7ed7_usg3oRfZFhFtsdK_zfgxrYi5m6Q.notify(Unknown Source)\n at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:351)\n at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:333)\n at io.quarkus.arc.impl.EventImpl$1.get(EventImpl.java:110)\n at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)\n at io.quarkus.vertx.core.runtime.VertxCoreRecorder$15.runWith(VertxCoreRecorder.java:637)\n at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)\n at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2654)\n at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)\n at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)\n at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)\n at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)\n at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n at java.base/java.lang.Thread.run(Thread.java:840)\nCaused by: org.kohsuke.github.HttpException: {\n \"documentation_url\": \"https://docs.github.com/free-pro-team@latest/rest/overview/rate-limits-for-the-rest-api#about-secondary-rate-limits\",\n \"message\": \"You have exceeded a secondary rate limit. Please wait a few minutes before you try again. If you reach out to GitHub Support for help, please include the request ID 6F00:24CFC5:.\"\n}\n at org.kohsuke.github.GitHubConnectorResponseErrorHandler$1.onError(GitHubConnectorResponseErrorHandler.java:83)\n at org.kohsuke.github.GitHubClient.detectKnownErrors(GitHubClient.java:504)\n at org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:464)\n at org.kohsuke.github.GitHubPageIterator.fetch(GitHubPageIterator.java:146)\n ... 33 more\n```", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2009/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1975", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/events", + "html_url": "https://github.com/hub4j/github-api/issues/1975", + "id": 2604556081, + "node_id": "I_kwDOAAlq-s6bPl8x", + "number": 1975, + "title": "Implement \"Secondary rate limit\" behavior to internally throttle querying ", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2024-10-22T07:39:26Z", + "updated_at": "2025-09-04T16:55:29Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "See #1805 \nSee #1842 \nSee #2009\n\nThis docs page describes secondary rate limit behavior: \nhttps://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#about-secondary-rate-limits\n\nAs of this reading it says: \n> You may encounter a secondary rate limit if you:\n\n> \n> * Make too many concurrent requests. No more than 100 concurrent requests are allowed. This limit is shared across the REST API and GraphQL API.\n> * Make too many requests to a single endpoint per minute. No more than 900 points per minute are allowed for REST API endpoints, and no more than 2,000 points per minute are allowed for the GraphQL API endpoint. For more information about points, see \"[Calculating points for the secondary rate limit](https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#calculating-points-for-the-secondary-rate-limit).\"\n> * Make too many requests per minute. No more than 90 seconds of CPU time per 60 seconds of real time is allowed. No more than 60 seconds of this CPU time may be for the GraphQL API. You can roughly estimate the CPU time by measuring the total response time for your API requests.\n> * Create too much content on GitHub in a short amount of time. In general, no more than 80 content-generating requests per minute and no more than 500 content-generating requests per hour are allowed. Some endpoints have lower content creation limits. Content creation limits include actions taken on the GitHub web interface as well as via the REST API and GraphQL API.\n> \n> These secondary rate limits are subject to change without notice. You may also encounter a secondary rate limit for undisclosed reasons.\n\nThese are incredibly loosely defined guides and you cannot query for them ahead of time. 👎 It looks like we need to take the path some users have suggested and make rate limiting much more resilient, potentially allowing users to write their own rate limit strategies for handling secondary rate limits. \n\nThe current internal `GitHubRateLimitChecker` would need to be replaced by a `PrimaryGitHubRateLimiter` which extends a new `GitHubRateLimiter` class/interface. Then each of the above bullet points would become a new rate limit tracking/enforcing class. All of them would need to be called before and after each query, and maintain their own configuration and calculated state. `GitHubRateLimiter` would provide the API and possibly helper functions to make that easier to do right. \n\nI think the basic API would be that the method call before a request is sent, would return an `Optional` and if more than one limiter returns a Duration the longest one is used. Or maybe return an optional record that includes a `reason` message and a duration, perhaps also a logLevel/severity. Make it easier to produce meaningful output. \n\n\n ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1975/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2115", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/events", + "html_url": "https://github.com/hub4j/github-api/issues/2115", + "id": 3234980989, + "node_id": "I_kwDOAAlq-s7A0eR9", + "number": 2115, + "title": "Search API does not support advanced search will stop working on September 4, 2025", + "user": { + "login": "donce", + "id": 1409983, + "node_id": "MDQ6VXNlcjE0MDk5ODM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1409983?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/donce", + "html_url": "https://github.com/donce", + "followers_url": "https://api.github.com/users/donce/followers", + "following_url": "https://api.github.com/users/donce/following{/other_user}", + "gists_url": "https://api.github.com/users/donce/gists{/gist_id}", + "starred_url": "https://api.github.com/users/donce/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/donce/subscriptions", + "organizations_url": "https://api.github.com/users/donce/orgs", + "repos_url": "https://api.github.com/users/donce/repos", + "events_url": "https://api.github.com/users/donce/events{/privacy}", + "received_events_url": "https://api.github.com/users/donce/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-07-16T08:24:12Z", + "updated_at": "2025-07-16T08:26:16Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "`GHPullRequestSearchBuilder` is built on the previous GitHub API, which does not use advanced search.\n\nOn September 4, 2025, advanced search will be enabled by default, but currently, it's not supported (from [docs](https://docs.github.com/en/rest/search/search?apiVersion=2022-11-28#search-issues-and-pull-requests)):\n\n>Warning\n>Notice: Search for issues and pull requests will be overridden by advanced search on September 4, 2025. You can read more about this change on [the GitHub blog](https://github.blog/changelog/2025-03-06-github-issues-projects-api-support-for-issues-advanced-search-and-more/).\n\nI think the github client should support that - as an opt-in now, but after September 4, it will be the only possible way.\n\n\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2115/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2102", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/events", + "html_url": "https://github.com/hub4j/github-api/issues/2102", + "id": 3072490567, + "node_id": "I_kwDOAAlq-s63InxH", + "number": 2102, + "title": "Cannot retrieve author from github release", + "user": { + "login": "solonovamax", + "id": 46940694, + "node_id": "MDQ6VXNlcjQ2OTQwNjk0", + "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/solonovamax", + "html_url": "https://github.com/solonovamax", + "followers_url": "https://api.github.com/users/solonovamax/followers", + "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", + "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", + "organizations_url": "https://api.github.com/users/solonovamax/orgs", + "repos_url": "https://api.github.com/users/solonovamax/repos", + "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", + "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-05-19T04:52:41Z", + "updated_at": "2025-05-24T16:47:22Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\nAuthor (`GHUser`) is not included in the `GHRelease` object, even though it is present in the api response.\n\nUnsure if this behaviour was changed in some past api update.\n\n**Expected behavior**\nAuthor is included.\n\n**Additional context**\napi docs: https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#list-releases\n\nexample api response:\n```json\n[\n {\n \"url\": \"https://api.github.com/repos/hashicorp/terraform/releases/218598268\",\n \"assets_url\": \"https://api.github.com/repos/hashicorp/terraform/releases/218598268/assets\",\n \"upload_url\": \"https://uploads.github.com/repos/hashicorp/terraform/releases/218598268/assets{?name,label}\",\n \"html_url\": \"https://github.com/hashicorp/terraform/releases/tag/v1.12.0\",\n \"id\": 218598268,\n \"author\": {\n \"login\": \"hc-github-team-es-release-engineering\",\n \"id\": 82989873,\n \"node_id\": \"MDQ6VXNlcjgyOTg5ODcz\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/82989873?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/hc-github-team-es-release-engineering\",\n \"html_url\": \"https://github.com/hc-github-team-es-release-engineering\",\n \"followers_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/followers\",\n \"following_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/orgs\",\n \"repos_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/repos\",\n \"events_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/received_events\",\n \"type\": \"User\",\n \"user_view_type\": \"public\",\n \"site_admin\": false\n },\n \"node_id\": \"RE_kwDOAQ6CpM4NB4t8\",\n \"tag_name\": \"v1.12.0\",\n \"target_commitish\": \"f9e9a59d7b5b48acf343e07fab768464bcdde4d7\",\n \"name\": \"v1.12.0\",\n \"draft\": false,\n \"prerelease\": false,\n \"created_at\": \"2025-05-14T14:11:25Z\",\n \"published_at\": \"2025-05-14T15:15:45Z\",\n \"assets\": [],\n \"tarball_url\": \"https://api.github.com/repos/hashicorp/terraform/tarball/v1.12.0\",\n \"zipball_url\": \"https://api.github.com/repos/hashicorp/terraform/zipball/v1.12.0\",\n \"body\": \"[truncated for brevity]\",\n \"reactions\": {\n \"url\": \"https://api.github.com/repos/hashicorp/terraform/releases/218598268/reactions\",\n \"total_count\": 11,\n \"+1\": 1,\n \"-1\": 0,\n \"laugh\": 0,\n \"hooray\": 0,\n \"confused\": 0,\n \"heart\": 0,\n \"rocket\": 10,\n \"eyes\": 0\n }\n }\n]\n```", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2102/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2083", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/events", + "html_url": "https://github.com/hub4j/github-api/issues/2083", + "id": 2980993460, + "node_id": "I_kwDOAAlq-s6xrlm0", + "number": 2083, + "title": "OSGi Manifest - add maven plugin", + "user": { + "login": "stbischof", + "id": 33224746, + "node_id": "MDQ6VXNlcjMzMjI0NzQ2", + "avatar_url": "https://avatars.githubusercontent.com/u/33224746?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/stbischof", + "html_url": "https://github.com/stbischof", + "followers_url": "https://api.github.com/users/stbischof/followers", + "following_url": "https://api.github.com/users/stbischof/following{/other_user}", + "gists_url": "https://api.github.com/users/stbischof/gists{/gist_id}", + "starred_url": "https://api.github.com/users/stbischof/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/stbischof/subscriptions", + "organizations_url": "https://api.github.com/users/stbischof/orgs", + "repos_url": "https://api.github.com/users/stbischof/repos", + "events_url": "https://api.github.com/users/stbischof/events{/privacy}", + "received_events_url": "https://api.github.com/users/stbischof/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-04-08T21:30:08Z", + "updated_at": "2025-04-13T06:54:04Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I would like to use this lib in an OSGi Framework. For this i would need some Metadata in the Manifest.MF.\n\nI would create a PR that adds this support using the bnd-maven-plugin.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2083/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2082", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/events", + "html_url": "https://github.com/hub4j/github-api/issues/2082", + "id": 2973118122, + "node_id": "I_kwDOAAlq-s6xNi6q", + "number": 2082, + "title": "Update Wiremock to v3 and JUnit5", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + }, + { + "id": 1780165359, + "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", + "name": "breaking change", + "color": "b60205", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-04-04T18:38:07Z", + "updated_at": "2025-04-04T18:38:23Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "See \nhttps://wiremock.org/docs/junit-jupiter/\n\n GithubWireMockRule creates and manages multiple WireMockServers. Need to do the same for JUnit5 but not sure how composable the JUnit5 WireMock extension is. Might need to move to an abstract base test class that instantiates all the servers. \n\nI think v3 is Java 11+ only but if it isn't do that as well. ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2082/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2076", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/events", + "html_url": "https://github.com/hub4j/github-api/issues/2076", + "id": 2957281274, + "node_id": "I_kwDOAAlq-s6wRIf6", + "number": 2076, + "title": "Inconsistent use of glob imports", + "user": { + "login": "solonovamax", + "id": 46940694, + "node_id": "MDQ6VXNlcjQ2OTQwNjk0", + "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/solonovamax", + "html_url": "https://github.com/solonovamax", + "followers_url": "https://api.github.com/users/solonovamax/followers", + "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", + "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", + "organizations_url": "https://api.github.com/users/solonovamax/orgs", + "repos_url": "https://api.github.com/users/solonovamax/repos", + "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", + "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-03-28T21:25:41Z", + "updated_at": "2025-03-29T18:00:33Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Some classes use glob imports, while others don't. The use of glob imports across files seems to be rather inconsistent.\n\nCurrently, with spotless, there doesn't seem to be a way to enforce using/disallowing glob imports, however there is an open issue for it: https://github.com/diffplug/spotless/issues/649.\nSome comments on the issue suggest using\n```xml\n\n Remove wildcard imports\n import\\s+(?:static\\s+)?[^\\*\\s]+\\*;(\\r\\n|\\r|\\n)\n $1\n\n```\nto remove all the glob imports, however this solution will simply remove them and won't replace them with the appropriate imports, causing the compile to fail.\n\nOpened due to discussion in #2074", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2076/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2075", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/events", + "html_url": "https://github.com/hub4j/github-api/issues/2075", + "id": 2957271743, + "node_id": "I_kwDOAAlq-s6wRGK_", + "number": 2075, + "title": "Inconsistent use of license header", + "user": { + "login": "solonovamax", + "id": 46940694, + "node_id": "MDQ6VXNlcjQ2OTQwNjk0", + "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/solonovamax", + "html_url": "https://github.com/solonovamax", + "followers_url": "https://api.github.com/users/solonovamax/followers", + "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", + "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", + "organizations_url": "https://api.github.com/users/solonovamax/orgs", + "repos_url": "https://api.github.com/users/solonovamax/repos", + "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", + "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-03-28T21:21:56Z", + "updated_at": "2025-03-29T18:00:16Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "There is an inconsistent use of the license header.\nCurrently, some files have a license header added, but others don't.\n\nSince you're using spotless, it can be used to enforce the license header:\nhttps://github.com/diffplug/spotless/tree/main/plugin-maven#license-header\n\nOpened due to discussion in #2074", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2075/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2058", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/events", + "html_url": "https://github.com/hub4j/github-api/issues/2058", + "id": 2913781594, + "node_id": "I_kwDOAAlq-s6trMda", + "number": 2058, + "title": "Enable hiding of comments", + "user": { + "login": "koppor", + "id": 1366654, + "node_id": "MDQ6VXNlcjEzNjY2NTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1366654?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/koppor", + "html_url": "https://github.com/koppor", + "followers_url": "https://api.github.com/users/koppor/followers", + "following_url": "https://api.github.com/users/koppor/following{/other_user}", + "gists_url": "https://api.github.com/users/koppor/gists{/gist_id}", + "starred_url": "https://api.github.com/users/koppor/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/koppor/subscriptions", + "organizations_url": "https://api.github.com/users/koppor/orgs", + "repos_url": "https://api.github.com/users/koppor/repos", + "events_url": "https://api.github.com/users/koppor/events{/privacy}", + "received_events_url": "https://api.github.com/users/koppor/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2025-03-12T12:20:51Z", + "updated_at": "2025-03-28T16:33:37Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I have comment count 3, but the PR has much more: https://github.com/JabRef/jabref/pull/12710\n\nI \"deleted\" the other comments using `comment.delete()`. It seems this has no effect on the UI.\n\nIn the UI, one can use \"Hide\"\n\n![Image](https://github.com/user-attachments/assets/5522c8c3-0764-49bf-bcc1-86a472b24d06)\n\n![Image](https://github.com/user-attachments/assets/623772ef-30b7-4b04-bac7-abc174289702)\n\nShould be possible via API, too?", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2058/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/timeline", + "performed_via_github_app": null, + "state_reason": "reopened", + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1454", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/events", + "html_url": "https://github.com/hub4j/github-api/issues/1454", + "id": 1229507490, + "node_id": "I_kwDOAAlq-s5JSMui", + "number": 1454, + "title": "Please provide streaming for upload large content ", + "user": { + "login": "Vampire", + "id": 325196, + "node_id": "MDQ6VXNlcjMyNTE5Ng==", + "avatar_url": "https://avatars.githubusercontent.com/u/325196?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Vampire", + "html_url": "https://github.com/Vampire", + "followers_url": "https://api.github.com/users/Vampire/followers", + "following_url": "https://api.github.com/users/Vampire/following{/other_user}", + "gists_url": "https://api.github.com/users/Vampire/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Vampire/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Vampire/subscriptions", + "organizations_url": "https://api.github.com/users/Vampire/orgs", + "repos_url": "https://api.github.com/users/Vampire/repos", + "events_url": "https://api.github.com/users/Vampire/events{/privacy}", + "received_events_url": "https://api.github.com/users/Vampire/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 7, + "created_at": "2022-05-09T10:34:22Z", + "updated_at": "2025-03-26T18:56:07Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I have a Gradle build where I build a Docker image tar file which has a size of 166 MiB.\r\nI use the GitHub publish Gradle plugin and tried to upload this Docker image as asset to the release.\r\nThis consistently resulted in an `OutOfMemoryError`.\r\n\r\nThe GitHub publish Gradle plugin under the hood uses this library.\r\nAnd I also easily reproduced it stand-alone.\r\nIn version 1.1xx, you use an `HttpsUrlConnection` without setting it to fixed-length streaming or chunking mode and thus the JRE uses a byte-array output stream to colllect the whole body in RAM to determine the size up-front.\r\nIn version 1.3xx many things changed, but now you use your `GitHubRequest.Builder#with(java.io.InputStream)` method to load the whole file into RAM using `IOUtils.toByteArray`.\r\n\r\nSo at different places both load the whole file into RAM instead of properly streaming it.\r\nPlease support at least giving the size to methods like `uploadAsset` so that the size can be set as HTTP header but the content be streamed, or if GitHub supports it maybe even using chunked mode additionally if no explicit size was given.\r\n\r\nThe problem can pretty easily be reproduced using:\r\n```java\r\ngithub\r\n .getRepository(\"my/repository\")\r\n .listReleases()\r\n .iterator()\r\n .next()\r\n .uploadAsset(\"foo.tar.gz\", new FileInputStream(\"file/that/is/too/large/for/RAM\"), \"application/octet-stream\")\r\n```", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1454/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/timeline", + "performed_via_github_app": null, + "state_reason": "reopened", + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1967", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/events", + "html_url": "https://github.com/hub4j/github-api/issues/1967", + "id": 2564089274, + "node_id": "I_kwDOAAlq-s6Y1OW6", + "number": 1967, + "title": "Branch rename is missing", + "user": { + "login": "sbouchexbellomie-Philips", + "id": 182072604, + "node_id": "U_kgDOCto1HA", + "avatar_url": "https://avatars.githubusercontent.com/u/182072604?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sbouchexbellomie-Philips", + "html_url": "https://github.com/sbouchexbellomie-Philips", + "followers_url": "https://api.github.com/users/sbouchexbellomie-Philips/followers", + "following_url": "https://api.github.com/users/sbouchexbellomie-Philips/following{/other_user}", + "gists_url": "https://api.github.com/users/sbouchexbellomie-Philips/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sbouchexbellomie-Philips/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sbouchexbellomie-Philips/subscriptions", + "organizations_url": "https://api.github.com/users/sbouchexbellomie-Philips/orgs", + "repos_url": "https://api.github.com/users/sbouchexbellomie-Philips/repos", + "events_url": "https://api.github.com/users/sbouchexbellomie-Philips/events{/privacy}", + "received_events_url": "https://api.github.com/users/sbouchexbellomie-Philips/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2024-10-03T13:35:26Z", + "updated_at": "2025-03-23T07:25:04Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Ability to rename a branch is missing\r\n\r\nGHBranch.rename should be added", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1967/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1965", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/events", + "html_url": "https://github.com/hub4j/github-api/issues/1965", + "id": 2563920009, + "node_id": "I_kwDOAAlq-s6Y0lCJ", + "number": 1965, + "title": "Deployment deletion is missing", + "user": { + "login": "sbouchexbellomie-Philips", + "id": 182072604, + "node_id": "U_kgDOCto1HA", + "avatar_url": "https://avatars.githubusercontent.com/u/182072604?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sbouchexbellomie-Philips", + "html_url": "https://github.com/sbouchexbellomie-Philips", + "followers_url": "https://api.github.com/users/sbouchexbellomie-Philips/followers", + "following_url": "https://api.github.com/users/sbouchexbellomie-Philips/following{/other_user}", + "gists_url": "https://api.github.com/users/sbouchexbellomie-Philips/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sbouchexbellomie-Philips/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sbouchexbellomie-Philips/subscriptions", + "organizations_url": "https://api.github.com/users/sbouchexbellomie-Philips/orgs", + "repos_url": "https://api.github.com/users/sbouchexbellomie-Philips/repos", + "events_url": "https://api.github.com/users/sbouchexbellomie-Philips/events{/privacy}", + "received_events_url": "https://api.github.com/users/sbouchexbellomie-Philips/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2024-10-03T12:23:11Z", + "updated_at": "2025-03-23T07:24:47Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Ability to delete a deployment is missing\r\n\r\nGHDeployment.delete should be added\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1965/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2041", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/events", + "html_url": "https://github.com/hub4j/github-api/issues/2041", + "id": 2871292068, + "node_id": "I_kwDOAAlq-s6rJHCk", + "number": 2041, + "title": "should fromCredentials not be public?", + "user": { + "login": "maxandersen", + "id": 54129, + "node_id": "MDQ6VXNlcjU0MTI5", + "avatar_url": "https://avatars.githubusercontent.com/u/54129?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/maxandersen", + "html_url": "https://github.com/maxandersen", + "followers_url": "https://api.github.com/users/maxandersen/followers", + "following_url": "https://api.github.com/users/maxandersen/following{/other_user}", + "gists_url": "https://api.github.com/users/maxandersen/gists{/gist_id}", + "starred_url": "https://api.github.com/users/maxandersen/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/maxandersen/subscriptions", + "organizations_url": "https://api.github.com/users/maxandersen/orgs", + "repos_url": "https://api.github.com/users/maxandersen/repos", + "events_url": "https://api.github.com/users/maxandersen/events{/privacy}", + "received_events_url": "https://api.github.com/users/maxandersen/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2025-02-22T20:16:12Z", + "updated_at": "2025-03-23T07:21:59Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\nGithubBuilder.fromCredentials is not public and given the auth provider field is not public it is not possible to implement the \"honor .github and env\" manually.\n\nThus should that method not be public? \n\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2041/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1798", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/events", + "html_url": "https://github.com/hub4j/github-api/issues/1798", + "id": 2147359719, + "node_id": "I_kwDOAAlq-s5__hvn", + "number": 1798, + "title": "Maven central moving to new publishing model and plugin", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2024-02-21T17:52:31Z", + "updated_at": "2025-03-23T06:52:23Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "It looks like Sonatype is moving to a new model for publishing: \r\nhttps://github.com/sonatype/nexus-public/issues/110#issuecomment-1900500381\r\n\r\nThe project may need to re-register or do some other updates to work in the new system:\r\nhttps://central.sonatype.org/register/central-portal/\r\nhttps://central.sonatype.org/publish/publish-portal-maven/\r\n\r\nIt is still in preview, so this is not urgent. I've started work on this but don't have time to finish it now: \r\nhttps://github.com/hub4j/github-api/tree/feature/new-maven-central-publishing", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1798/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/521", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/521/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/521/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/521/events", + "html_url": "https://github.com/hub4j/github-api/issues/521", + "id": 447748493, + "node_id": "MDU6SXNzdWU0NDc3NDg0OTM=", + "number": 521, + "title": "GitHub v4 GraphQL API support", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 11, + "created_at": "2019-05-23T16:02:20Z", + "updated_at": "2025-03-19T17:33:15Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "The v4 API provides a much more customizable API based on GraphQL. It is out of scope for this library to provide a generalized API the fully leverages the power of GraphQL, but having some way to construct queries for trees of items would be useful. \r\n\r\nhttps://developer.github.com/v4/", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/521/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/521/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2060", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/events", + "html_url": "https://github.com/hub4j/github-api/issues/2060", + "id": 2922558598, + "node_id": "I_kwDOAAlq-s6uMrSG", + "number": 2060, + "title": "Issues with getMergeCommitSha", + "user": { + "login": "BradPlayerZero", + "id": 172313252, + "node_id": "U_kgDOCkVKpA", + "avatar_url": "https://avatars.githubusercontent.com/u/172313252?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/BradPlayerZero", + "html_url": "https://github.com/BradPlayerZero", + "followers_url": "https://api.github.com/users/BradPlayerZero/followers", + "following_url": "https://api.github.com/users/BradPlayerZero/following{/other_user}", + "gists_url": "https://api.github.com/users/BradPlayerZero/gists{/gist_id}", + "starred_url": "https://api.github.com/users/BradPlayerZero/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/BradPlayerZero/subscriptions", + "organizations_url": "https://api.github.com/users/BradPlayerZero/orgs", + "repos_url": "https://api.github.com/users/BradPlayerZero/repos", + "events_url": "https://api.github.com/users/BradPlayerZero/events{/privacy}", + "received_events_url": "https://api.github.com/users/BradPlayerZero/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-03-15T21:26:52Z", + "updated_at": "2025-03-18T21:06:41Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Two fixes needed for getMergeCommitSha:\n\n /**\n * See GitHub blog post\n *\n * @return the merge commit sha\n * @throws IOException\n * the io exception\n */\n public String getMergeCommitSha() throws IOException {\n populate();\n return merge_commit_sha;\n }\n\nFirst, GitHub has reversed themselves on deprecating merge_commit_id, so the comment should be removed.\n\nSecond, merge_commit_id is part of the list pull request API (get /repos/{owner}/{repo}/pulls), and required, so it should not call populate().\n\n\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2060/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2061", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/events", + "html_url": "https://github.com/hub4j/github-api/issues/2061", + "id": 2923132207, + "node_id": "I_kwDOAAlq-s6uO3Uv", + "number": 2061, + "title": "`GHIssue#isPullRequest` is false despite being a PR", + "user": { + "login": "Haarolean", + "id": 1494347, + "node_id": "MDQ6VXNlcjE0OTQzNDc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Haarolean", + "html_url": "https://github.com/Haarolean", + "followers_url": "https://api.github.com/users/Haarolean/followers", + "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", + "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", + "organizations_url": "https://api.github.com/users/Haarolean/orgs", + "repos_url": "https://api.github.com/users/Haarolean/repos", + "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", + "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-03-16T15:23:51Z", + "updated_at": "2025-03-17T10:37:01Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\n`isPullRequest` in GHIssue returns false due to `pull_request == null` condition. The PR object was acquired via `payload.getPullRequest()` method of `GHEventPayload.PullRequest` class.\n\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Get an instance of `GHEventPayload.PullRequest` event\n2. Get the pr entity via `payload.getPullRequest()`\n3. Observe that despite object being an instance of `GHPullRequest` the return value of `isPullRequest` method is false.\n\n**Expected behavior**\nexpected true", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2061/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2062", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/events", + "html_url": "https://github.com/hub4j/github-api/issues/2062", + "id": 2923159729, + "node_id": "I_kwDOAAlq-s6uO-Cx", + "number": 2062, + "title": "`branch.getProtection()` fails with an exception for ruleset-protected branch", + "user": { + "login": "Haarolean", + "id": 1494347, + "node_id": "MDQ6VXNlcjE0OTQzNDc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Haarolean", + "html_url": "https://github.com/Haarolean", + "followers_url": "https://api.github.com/users/Haarolean/followers", + "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", + "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", + "organizations_url": "https://api.github.com/users/Haarolean/orgs", + "repos_url": "https://api.github.com/users/Haarolean/repos", + "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", + "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-03-16T16:11:09Z", + "updated_at": "2025-03-17T10:34:17Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\nIf a branch (`GHBranch`) is protected via rulesets rather than classic (deprecated?) branch protection rules, `GHBranch#isProtected()` returns `true`, but `GHBranch#getProtection` desintegrates with the following exception:\n```\norg.kohsuke.github.GHFileNotFoundException: https://api.github.com/repos/ZooPets/kapybro-demo-dev/branches/main/protection {\"message\":\"Branch not protected\",\"documentation_url\":\"https://docs.github.com/rest/branches/branch-protection#get-branch-protection\",\"status\":\"404\"}\n\tat org.kohsuke.github.GitHubClient.interpretApiError(GitHubClient.java:661) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:480) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:427) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.Requester.fetch(Requester.java:85) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GHBranch.getProtection(GHBranch.java:112) ~[github-api-unbridged-1.318.jar:na]\n//omitted\nCaused by: java.io.FileNotFoundException: https://api.github.com/repos/ZooPets/kapybro-demo-dev/branches/main/protection\n\tat org.kohsuke.github.GitHubConnectorResponseErrorHandler$1.onError(GitHubConnectorResponseErrorHandler.java:60) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.detectKnownErrors(GitHubClient.java:504) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:464) ~[github-api-unbridged-1.318.jar:na]\n\t... 179 common frames omitted\n```\n\nMost likely, `GHBranch#isProtected()` will be true for both protection methods, so we need a way to tell them apart without conflating two different methods and later calling wrong endpoints.\nPerhaps a temp solution could be introduced until #1811 is implemented.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2062/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1811", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/events", + "html_url": "https://github.com/hub4j/github-api/issues/1811", + "id": 2177274983, + "node_id": "I_kwDOAAlq-s6BxpRn", + "number": 1811, + "title": "Implement API for retrieving and managing rulesets on a repository", + "user": { + "login": "FHannes", + "id": 915760, + "node_id": "MDQ6VXNlcjkxNTc2MA==", + "avatar_url": "https://avatars.githubusercontent.com/u/915760?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/FHannes", + "html_url": "https://github.com/FHannes", + "followers_url": "https://api.github.com/users/FHannes/followers", + "following_url": "https://api.github.com/users/FHannes/following{/other_user}", + "gists_url": "https://api.github.com/users/FHannes/gists{/gist_id}", + "starred_url": "https://api.github.com/users/FHannes/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/FHannes/subscriptions", + "organizations_url": "https://api.github.com/users/FHannes/orgs", + "repos_url": "https://api.github.com/users/FHannes/repos", + "events_url": "https://api.github.com/users/FHannes/events{/privacy}", + "received_events_url": "https://api.github.com/users/FHannes/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2024-03-09T15:42:36Z", + "updated_at": "2025-03-16T16:04:55Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "As far as I can tell, the library currently supports managing branch protection, but not [rulesets](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets). The use of rulesets has some advantages over using branch protection [as listed in the documentation](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets#about-rulesets-protected-branches-and-protected-tags), so it might be useful to add support for them.\r\nAPI reference: https://docs.github.com/en/rest/repos/rules?apiVersion=2022-11-28", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1811/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2028", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/events", + "html_url": "https://github.com/hub4j/github-api/issues/2028", + "id": 2843436852, + "node_id": "I_kwDOAAlq-s6pe2c0", + "number": 2028, + "title": "GHMilestone throws NPE on null state", + "user": { + "login": "rnveach", + "id": 5427943, + "node_id": "MDQ6VXNlcjU0Mjc5NDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rnveach", + "html_url": "https://github.com/rnveach", + "followers_url": "https://api.github.com/users/rnveach/followers", + "following_url": "https://api.github.com/users/rnveach/following{/other_user}", + "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", + "organizations_url": "https://api.github.com/users/rnveach/orgs", + "repos_url": "https://api.github.com/users/rnveach/repos", + "events_url": "https://api.github.com/users/rnveach/events{/privacy}", + "received_events_url": "https://api.github.com/users/rnveach/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2025-02-10T19:35:34Z", + "updated_at": "2025-02-27T18:05:14Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "The following method is not `null` safe:\nhttps://github.com/hub4j/github-api/blob/055638069ce8299629225be7f39395b16d4fe839/src/main/java/org/kohsuke/github/GHMilestone.java#L137-L138\n\nWhenever it is called to get the state of the milestone, and it (`state` field) is `null`, it will throw a `NullPointerException`.\n\nThere is no other method in this class to ascertain the value of this before calling the method. The field is private. Programmers are forced to wrap this in a try/catch in the case it is null.\n\nIt would ease handling this call if it had a `null` check and returned `null` if there is no state.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2028/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + } + ] +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/3-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/3-search_issues.json new file mode 100644 index 0000000000..70588b20a1 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/3-search_issues.json @@ -0,0 +1,2596 @@ +{ + "total_count": 164, + "incomplete_results": false, + "items": [ + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2181", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/events", + "html_url": "https://github.com/hub4j/github-api/issues/2181", + "id": 3843541321, + "node_id": "I_kwDOAAlq-s7lF8lJ", + "number": 2181, + "title": "[Feature request] Expose Co-Authored-By Metadata in Commit API", + "user": { + "login": "yeikel", + "id": 8935151, + "node_id": "MDQ6VXNlcjg5MzUxNTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/8935151?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yeikel", + "html_url": "https://github.com/yeikel", + "followers_url": "https://api.github.com/users/yeikel/followers", + "following_url": "https://api.github.com/users/yeikel/following{/other_user}", + "gists_url": "https://api.github.com/users/yeikel/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yeikel/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yeikel/subscriptions", + "organizations_url": "https://api.github.com/users/yeikel/orgs", + "repos_url": "https://api.github.com/users/yeikel/repos", + "events_url": "https://api.github.com/users/yeikel/events{/privacy}", + "received_events_url": "https://api.github.com/users/yeikel/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + }, + { + "id": 1686292366, + "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", + "name": "more information needed", + "color": "9ce1ed", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-01-22T15:48:48Z", + "updated_at": "2026-01-24T21:57:18Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Use Case:** \n\nIdentify all contributors to a commit, including those listed as `Co-Authored-By` in the commit message footer. Currently, the API exposes only the main author and committer, but not co-authors.\n\n```java\n var userEmail = commit.getAuthor().getEmail();\n var commiterEmail = commit.getCommitter().getEmail();\n // How to get the co-author with this API? \n```\n\n**Proposed Solution:** \n- Add a method to `GHCommit` (or similar) that returns a list of co-authors parsed from the commit message.\n- Optionally, provide a structured representation (e.g., name and email) for each co-author.\n\n**Example API:**\n```java\nList getCoAuthors();\n```\n\n\n**References:** \n\nhttps://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors#creating-co-authored-commits-on-the-command-line\n\n**Note to maintainers:** \n\nApologies if this is currently possible, please share any snippet if you can. Thank you in advance! ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2181/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2166", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/events", + "html_url": "https://github.com/hub4j/github-api/issues/2166", + "id": 3668649747, + "node_id": "I_kwDOAAlq-s7aqycT", + "number": 2166, + "title": "Compatibility issue with Jackson 2.20 and above", + "user": { + "login": "yeikel", + "id": 8935151, + "node_id": "MDQ6VXNlcjg5MzUxNTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/8935151?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yeikel", + "html_url": "https://github.com/yeikel", + "followers_url": "https://api.github.com/users/yeikel/followers", + "following_url": "https://api.github.com/users/yeikel/following{/other_user}", + "gists_url": "https://api.github.com/users/yeikel/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yeikel/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yeikel/subscriptions", + "organizations_url": "https://api.github.com/users/yeikel/orgs", + "repos_url": "https://api.github.com/users/yeikel/repos", + "events_url": "https://api.github.com/users/yeikel/events{/privacy}", + "received_events_url": "https://api.github.com/users/yeikel/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2025-11-26T18:38:53Z", + "updated_at": "2026-01-15T04:18:43Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\n\nI am trying to use the project along with Jackson 2.20.1 but it fails at runtime with the following issue while creating the mapper \n\n```\nException in thread \"main\" java.lang.NoSuchFieldError: Class com.fasterxml.jackson.databind.PropertyNamingStrategy does not have member field 'com.fasterxml.jackson.databind.PropertyNamingStrategy SNAKE_CASE'\n\tat org.kohsuke.github.GitHubClient.(GitHubClient.java:98)\n```\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Configure a project and add Jackson 2.20.1 to the classpath\n2. Try to create a new client\n\n\n**Expected behavior**\n\nThe client is created \n\n**Actual behavior**\n\nIt fails because it cannot find `PropertyNamingStrategy SNAKE_CASE` which no longer exists\n\n**Desktop (please complete the following information):**\n\n - Version: 2.0-rc.5\n\n**Additional context**\n\nUsage: https://github.com/hub4j/github-api/blob/9e09d67fbb35808abc0782e7d0cbf4b6e64a94de/src/main/java/org/kohsuke/github/GitHubClient.java#L124\n\nThis feature was dropped in Jackson 2.20. Using Jackson 2.19.4 works for now but it is not a long term solution\n\nSee https://github.com/FasterXML/jackson-databind/commit/4d2083160fef06e6063a3082f0fdaab8c2803793\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2166/reactions", + "total_count": 3, + "+1": 3, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2172", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/events", + "html_url": "https://github.com/hub4j/github-api/issues/2172", + "id": 3695344435, + "node_id": "I_kwDOAAlq-s7cQnsz", + "number": 2172, + "title": "GitHubSanityCachedValue can block whole application", + "user": { + "login": "alexec", + "id": 1142830, + "node_id": "MDQ6VXNlcjExNDI4MzA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1142830?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/alexec", + "html_url": "https://github.com/alexec", + "followers_url": "https://api.github.com/users/alexec/followers", + "following_url": "https://api.github.com/users/alexec/following{/other_user}", + "gists_url": "https://api.github.com/users/alexec/gists{/gist_id}", + "starred_url": "https://api.github.com/users/alexec/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/alexec/subscriptions", + "organizations_url": "https://api.github.com/users/alexec/orgs", + "repos_url": "https://api.github.com/users/alexec/repos", + "events_url": "https://api.github.com/users/alexec/events{/privacy}", + "received_events_url": "https://api.github.com/users/alexec/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2025-12-04T16:12:07Z", + "updated_at": "2025-12-16T15:38:13Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "\nThe `GitHubSanityCachedValue` class contains a single shared lock. This means that client to this class can be blocked by another user of the function. \n\nInstead, it might be better to use a read/write lock.\n\n\nhttps://github.com/hub4j/github-api/blob/9e09d67fbb35808abc0782e7d0cbf4b6e64a94de/src/main/java/org/kohsuke/github/GitHubSanityCachedValue.java#L11 ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2172/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2010", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/events", + "html_url": "https://github.com/hub4j/github-api/issues/2010", + "id": 2792856326, + "node_id": "I_kwDOAAlq-s6md5sG", + "number": 2010, + "title": "Support new issue types", + "user": { + "login": "Haarolean", + "id": 1494347, + "node_id": "MDQ6VXNlcjE0OTQzNDc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Haarolean", + "html_url": "https://github.com/Haarolean", + "followers_url": "https://api.github.com/users/Haarolean/followers", + "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", + "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", + "organizations_url": "https://api.github.com/users/Haarolean/orgs", + "repos_url": "https://api.github.com/users/Haarolean/repos", + "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", + "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2025-01-16T13:57:43Z", + "updated_at": "2025-11-12T23:19:16Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Github introduced new enhancements to issues: issue types, sub-issues, and other minor issues. It seems like they're forcing these issue types by default now, the field is visible even if you don't want to use it, my guess is it will be a default soon.\nSo it makes sense to implement this kind of API.\n\nhttps://github.blog/changelog/2025-01-13-evolving-github-issues-public-preview/\nWhile it's stated that it's in \"preview\", they've already started rolling it out actively without opting in.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2010/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2156", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/events", + "html_url": "https://github.com/hub4j/github-api/issues/2156", + "id": 3574234743, + "node_id": "I_kwDOAAlq-s7VCn53", + "number": 2156, + "title": "Enterprise installations not recognized (throws an Exception)", + "user": { + "login": "boriel", + "id": 1433137, + "node_id": "MDQ6VXNlcjE0MzMxMzc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1433137?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/boriel", + "html_url": "https://github.com/boriel", + "followers_url": "https://api.github.com/users/boriel/followers", + "following_url": "https://api.github.com/users/boriel/following{/other_user}", + "gists_url": "https://api.github.com/users/boriel/gists{/gist_id}", + "starred_url": "https://api.github.com/users/boriel/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/boriel/subscriptions", + "organizations_url": "https://api.github.com/users/boriel/orgs", + "repos_url": "https://api.github.com/users/boriel/repos", + "events_url": "https://api.github.com/users/boriel/events{/privacy}", + "received_events_url": "https://api.github.com/users/boriel/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-10-31T10:01:12Z", + "updated_at": "2025-11-12T23:16:45Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Description of the bug**\nWhen listing installations for a given App ID, the deserialization of the JSON response fails with the exception:\n```\nhudson.remoting.ProxyException: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `org.kohsuke.github.GHTargetType` from String \"Enterprise\": not one of the values accepted for Enum class: [ORGANIZATION, USER]\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 756] (through reference chain: java.lang.Object[][0]->org.kohsuke.github.GHAppInstallation[\"target_type\"])\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1959)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:1245)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.EnumDeserializer._deserializeAltString(EnumDeserializer.java:447)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.EnumDeserializer._fromString(EnumDeserializer.java:304)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.EnumDeserializer.deserialize(EnumDeserializer.java:273)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:138)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:399)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:218)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2131)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1566)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubResponse.parseBody(GitHubResponse.java:104)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubPageIterator.lambda$fetch$0(GitHubPageIterator.java:147)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubClient.createResponse(GitHubClient.java:679)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:466)\nCaused: hudson.remoting.ProxyException: org.kohsuke.github.HttpException: Server returned HTTP response code: 200, message: 'null' for URL: [https://api.github.com/app/installati](https://api.github.com/app/installations)\n ...\n```\n\n**To Reproduce**\nTo reproduce:\n\n 1. Install a GitHub App at the enterprise level (this is a rather new feature)\n 1. do an api call to\n[https://api.github.com/app/installations](https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#list-installations-for-the-authenticated-app)\n \nThe `target_type` field will be `\"Enterprise\"` in one of the installations returned, and the deserialization will fail.\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\nJust return the deserialized content with this new `target_type`\n\n**Desktop (please complete the following information):**\n Does not apply\n\n**Additional context**\nFixing this will require adding the `ENTERPRISE` type to the `GHTargetType` Enum here:\nhttps://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GHTargetType.java#L17", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2156/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2155", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/events", + "html_url": "https://github.com/hub4j/github-api/issues/2155", + "id": 3570367983, + "node_id": "I_kwDOAAlq-s7Uz33v", + "number": 2155, + "title": "[Feature request] Support matching-refs API", + "user": { + "login": "krzema12", + "id": 3110813, + "node_id": "MDQ6VXNlcjMxMTA4MTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/3110813?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/krzema12", + "html_url": "https://github.com/krzema12", + "followers_url": "https://api.github.com/users/krzema12/followers", + "following_url": "https://api.github.com/users/krzema12/following{/other_user}", + "gists_url": "https://api.github.com/users/krzema12/gists{/gist_id}", + "starred_url": "https://api.github.com/users/krzema12/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/krzema12/subscriptions", + "organizations_url": "https://api.github.com/users/krzema12/orgs", + "repos_url": "https://api.github.com/users/krzema12/repos", + "events_url": "https://api.github.com/users/krzema12/events{/privacy}", + "received_events_url": "https://api.github.com/users/krzema12/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-10-30T11:39:29Z", + "updated_at": "2025-11-12T23:12:26Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "See https://docs.github.com/en/rest/git/refs?apiVersion=2022-11-28#list-matching-references. The endpoint is `/repos/{owner}/{repo}/git/matching-refs/{ref}`.\n\nThe goal of this endpoint is to list refs that match the given prefix. It's useful to avoid fetching all available refs.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2155/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2120", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/events", + "html_url": "https://github.com/hub4j/github-api/issues/2120", + "id": 3274944747, + "node_id": "I_kwDOAAlq-s7DM7Dr", + "number": 2120, + "title": "Bridged artifact publishing failed for 2.0-rc.4", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-07-29T20:45:38Z", + "updated_at": "2025-10-23T18:21:36Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "https://github.com/hub4j/github-api/actions/runs/16606284210\n\n```\n2025-07-29T20:24:21.7667363Z ##[group]Run mvn -B clean deploy -DskipTests -Prelease -Pbridged\n2025-07-29T20:24:21.7668059Z \u001b[36;1mmvn -B clean deploy -DskipTests -Prelease -Pbridged\u001b[0m\n2025-07-29T20:24:21.7696714Z shell: /usr/bin/bash -e {0}\n2025-07-29T20:24:21.7697147Z env:\n2025-07-29T20:24:21.7698515Z JAVA_11_PLUS_MAVEN_OPTS: --add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED\n2025-07-29T20:24:21.7700071Z JAVA_HOME: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/17.0.16-8/x64\n2025-07-29T20:24:21.7700782Z JAVA_HOME_17_X64: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/17.0.16-8/x64\n2025-07-29T20:24:21.7702295Z MAVEN_OPTS: --add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED\n2025-07-29T20:24:21.7704065Z MAVEN_USERNAME: ***\n2025-07-29T20:24:21.7704550Z MAVEN_PASSWORD: ***\n2025-07-29T20:24:21.7705067Z MAVEN_GPG_PASSPHRASE: ***\n2025-07-29T20:24:21.7705491Z ##[endgroup]\n2025-07-29T20:24:23.0228744Z [INFO] Scanning for projects...\n2025-07-29T20:24:23.9536099Z [WARNING] \n2025-07-29T20:24:23.9537453Z [WARNING] Some problems were encountered while building the effective model for org.kohsuke:github-api-bridged:jar:2.0-rc.4\n2025-07-29T20:24:23.9540996Z [WARNING] 'artifactId' contains an expression but should be a constant. @ org.kohsuke:${github-api.artifactId}:2.0-rc.4, /home/runner/work/github-api/github-api/pom.xml, line 5, column 15\n2025-07-29T20:24:23.9546247Z [WARNING] \n2025-07-29T20:24:23.9547681Z [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.\n2025-07-29T20:24:23.9556489Z [WARNING] \n2025-07-29T20:24:23.9559777Z [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.\n2025-07-29T20:24:23.9560985Z [WARNING] \n2025-07-29T20:24:23.9618771Z [INFO] Inspecting build with total of 1 modules...\n2025-07-29T20:24:23.9621326Z [INFO] Installing Nexus Staging features:\n2025-07-29T20:24:23.9623096Z [INFO] ... total of 1 executions of maven-deploy-plugin replaced with nexus-staging-maven-plugin\n2025-07-29T20:24:23.9709735Z [INFO] \n2025-07-29T20:24:23.9710932Z [INFO] -------------------< org.kohsuke:github-api-bridged >-------------------\n2025-07-29T20:24:23.9731357Z [INFO] Building GitHub API for Java 2.0-rc.4\n2025-07-29T20:24:23.9732242Z [INFO] from pom.xml\n2025-07-29T20:24:23.9733097Z [INFO] --------------------------------[ jar ]---------------------------------\n2025-07-29T20:24:24.1975820Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/com/infradna/tool/bridge-method-injector/1.31/bridge-method-injector-1.31.jar\n2025-07-29T20:24:24.9010193Z [INFO] Downloaded from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/com/infradna/tool/bridge-method-injector/1.31/bridge-method-injector-1.31.jar (20 kB at 29 kB/s)\n2025-07-29T20:24:25.2685425Z [INFO] \n2025-07-29T20:24:25.2688450Z [INFO] --- clean:3.2.0:clean (default-clean) @ github-api-bridged ---\n2025-07-29T20:24:25.3139513Z [INFO] Deleting /home/runner/work/github-api/github-api/target\n2025-07-29T20:24:25.3751804Z [INFO] \n2025-07-29T20:24:25.3755019Z [INFO] --- sortpom:4.0.0:verify (default) @ github-api-bridged ---\n2025-07-29T20:24:25.4004807Z [INFO] Verifying file /home/runner/work/github-api/github-api/pom.xml\n2025-07-29T20:24:25.5574156Z [INFO] \n2025-07-29T20:24:25.5604522Z [INFO] --- resources:3.3.1:copy-resources (copy-bridged-resources) @ github-api-bridged ---\n2025-07-29T20:24:25.6211373Z [INFO] Copying 2 resources from src/main/resources/META-INF/native-image/org.kohsuke/github-api to target/classes/META-INF/native-image/org.kohsuke/github-api-bridged\n2025-07-29T20:24:25.6257379Z [INFO] \n2025-07-29T20:24:25.6260843Z [INFO] --- resources:3.3.1:resources (default-resources) @ github-api-bridged ---\n2025-07-29T20:24:25.6298334Z [INFO] Copying 2 resources from src/main/resources to target/classes\n2025-07-29T20:24:25.6313090Z [INFO] \n2025-07-29T20:24:25.6316388Z [INFO] --- compiler:3.14.0:compile (default-compile) @ github-api-bridged ---\n2025-07-29T20:24:25.7492402Z [INFO] Recompiling the module because of changed source code.\n2025-07-29T20:24:25.7577343Z [INFO] Compiling 248 source files with javac [debug release 11] to target/classes\n2025-07-29T20:24:29.2601532Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/GitHubRequest.java: Some input files use or override a deprecated API.\n2025-07-29T20:24:29.2605584Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/GitHubRequest.java: Recompile with -Xlint:deprecation for details.\n2025-07-29T20:24:29.2645024Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/AbstractBuilder.java: Some input files use unchecked or unsafe operations.\n2025-07-29T20:24:29.2647447Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/AbstractBuilder.java: Recompile with -Xlint:unchecked for details.\n2025-07-29T20:24:29.2649001Z [INFO] \n2025-07-29T20:24:29.2649896Z [INFO] --- bridge-method-injector:1.31:process (default) @ github-api-bridged ---\n2025-07-29T20:24:29.2652007Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm/9.8/asm-9.8.pom\n2025-07-29T20:24:29.2949999Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.pom\n2025-07-29T20:24:29.3649367Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.pom (2.4 kB at 34 kB/s)\n2025-07-29T20:24:29.3683200Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.pom\n2025-07-29T20:24:29.3975186Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.pom\n2025-07-29T20:24:29.4137372Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.pom (2.8 kB at 186 kB/s)\n2025-07-29T20:24:29.4162498Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.pom\n2025-07-29T20:24:29.4335247Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.pom\n2025-07-29T20:24:29.4487718Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.pom (2.6 kB at 173 kB/s)\n2025-07-29T20:24:29.4537743Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm/9.8/asm-9.8.jar\n2025-07-29T20:24:29.4724836Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.jar\n2025-07-29T20:24:29.4726869Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.jar\n2025-07-29T20:24:29.5200408Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.jar\n2025-07-29T20:24:29.5581033Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.jar (126 kB at 3.3 MB/s)\n2025-07-29T20:24:29.5604951Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.jar\n2025-07-29T20:24:29.5607222Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.jar\n2025-07-29T20:24:29.5810217Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.jar (73 kB at 3.3 MB/s)\n2025-07-29T20:24:29.6160423Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.jar (52 kB at 911 kB/s)\n2025-07-29T20:24:29.7000553Z [INFO] \n2025-07-29T20:24:29.7004734Z [INFO] --- resources:3.3.1:testResources (default-testResources) @ github-api-bridged ---\n2025-07-29T20:24:29.8214547Z [INFO] Copying 80 resources from src/test/resources to target/test-classes\n2025-07-29T20:24:29.8321255Z [INFO] \n2025-07-29T20:24:29.8322203Z [INFO] --- compiler:3.14.0:testCompile (default-testCompile) @ github-api-bridged ---\n2025-07-29T20:24:29.8448238Z [INFO] Recompiling the module because of changed dependency.\n2025-07-29T20:24:29.8464047Z [INFO] Compiling 89 source files with javac [debug release 11] to target/test-classes\n2025-07-29T20:24:33.5592285Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/AbstractGHAppInstallationTest.java: Some input files use or override a deprecated API.\n2025-07-29T20:24:33.5595228Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/AbstractGHAppInstallationTest.java: Recompile with -Xlint:deprecation for details.\n2025-07-29T20:24:33.5597814Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/GitHubWireMockRule.java: Some input files use unchecked or unsafe operations.\n2025-07-29T20:24:33.5600435Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/GitHubWireMockRule.java: Recompile with -Xlint:unchecked for details.\n2025-07-29T20:24:33.5602352Z [INFO] \n2025-07-29T20:24:33.5605120Z [INFO] --- spring-boot:3.3.5:process-test-aot (process-test-aot) @ github-api-bridged ---\n2025-07-29T20:24:33.6745177Z [INFO] Skipping AOT test processing since tests are skipped\n2025-07-29T20:24:33.6751073Z [INFO] \n2025-07-29T20:24:33.6751944Z [INFO] --- surefire:3.5.3:test (default-test) @ github-api-bridged ---\n2025-07-29T20:24:33.7535969Z [INFO] Tests are skipped.\n2025-07-29T20:24:33.7536776Z [INFO] \n2025-07-29T20:24:33.7537563Z [INFO] --- jar:3.4.2:jar (default-jar) @ github-api-bridged ---\n2025-07-29T20:24:33.9589304Z [INFO] Building jar: /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:24:34.0705411Z [INFO] \n2025-07-29T20:24:34.0706287Z [INFO] --- javadoc:3.11.2:jar (attach-javadocs) @ github-api-bridged ---\n2025-07-29T20:24:34.5637285Z [INFO] No previous run data found, generating javadoc.\n2025-07-29T20:24:40.3755359Z [INFO] Building jar: /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:24:40.5876374Z [INFO] \n2025-07-29T20:24:40.5881032Z [INFO] --- source:3.3.1:jar-no-fork (attach-sources) @ github-api-bridged ---\n2025-07-29T20:24:40.7511753Z [INFO] Building jar: /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:24:40.8140859Z [INFO] \n2025-07-29T20:24:40.8142525Z [INFO] --- jacoco:0.8.12:prepare-agent-integration (default) @ github-api-bridged ---\n2025-07-29T20:24:40.8461770Z [INFO] jacoco.surefire.argLine set to -javaagent:/home/runner/.m2/repository/org/jacoco/org.jacoco.agent/0.8.12/org.jacoco.agent-0.8.12-runtime.jar=destfile=/home/runner/work/github-api/github-api/target/jacoco-it.exec,excludes=/org/kohsuke/github/example/*\n2025-07-29T20:24:40.8494367Z [INFO] \n2025-07-29T20:24:40.8495616Z [INFO] --- surefire:3.5.3:test (okhttp-test) @ github-api-bridged ---\n2025-07-29T20:24:40.8496881Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8497800Z [INFO] \n2025-07-29T20:24:40.8498984Z [INFO] --- surefire:3.5.3:test (httpclient-test-tracing) @ github-api-bridged ---\n2025-07-29T20:24:40.8524871Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8534351Z [INFO] \n2025-07-29T20:24:40.8535275Z [INFO] --- surefire:3.5.3:test (slow-or-flaky-test) @ github-api-bridged ---\n2025-07-29T20:24:40.8550533Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8557437Z [INFO] \n2025-07-29T20:24:40.8558398Z [INFO] --- surefire:3.5.3:test (slow-or-flaky-test-tracing) @ github-api-bridged ---\n2025-07-29T20:24:40.8572406Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8575439Z [INFO] \n2025-07-29T20:24:40.8576894Z [INFO] --- surefire:3.5.3:test (jwt0.11.x-test) @ github-api-bridged ---\n2025-07-29T20:24:40.8602410Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8608154Z [INFO] \n2025-07-29T20:24:40.8609090Z [INFO] --- spotless:2.44.5:check (spotless-check) @ github-api-bridged ---\n2025-07-29T20:24:41.2263304Z [INFO] Index file does not exist. Fallback to an empty index\n2025-07-29T20:24:46.6711821Z [INFO] Spotless.Java is keeping 337 files clean - 0 needs changes to be clean, 337 were already clean, 0 were skipped because caching determined they were already clean\n2025-07-29T20:24:46.6755549Z [INFO] \n2025-07-29T20:24:46.6756409Z [INFO] --- japicmp:0.23.1:cmp (default) @ github-api-bridged ---\n2025-07-29T20:24:46.8656192Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:24:46.8659827Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:24:46.8805000Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/maven-metadata.xml (379 B at 24 kB/s)\n2025-07-29T20:24:46.8950664Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/kohsuke/github-api-bridged/2.0-rc.3/github-api-bridged-2.0-rc.3.jar\n2025-07-29T20:24:46.9134198Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/2.0-rc.3/github-api-bridged-2.0-rc.3.jar\n2025-07-29T20:24:46.9714434Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/2.0-rc.3/github-api-bridged-2.0-rc.3.jar (653 kB at 11 MB/s)\n2025-07-29T20:24:47.4514453Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.diff'.\n2025-07-29T20:24:47.4782383Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.md'.\n2025-07-29T20:24:47.7245716Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.xml'.\n2025-07-29T20:24:47.7299099Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.html'.\n2025-07-29T20:24:47.7317925Z [INFO] \n2025-07-29T20:24:47.7318868Z [INFO] >>> spotbugs:4.9.3.0:check (run-spotbugs) > :spotbugs @ github-api-bridged >>>\n2025-07-29T20:24:47.7507293Z [INFO] \n2025-07-29T20:24:47.7508252Z [INFO] --- spotbugs:4.9.3.0:spotbugs (spotbugs) @ github-api-bridged ---\n2025-07-29T20:24:48.6436935Z [INFO] Fork Value is true\n2025-07-29T20:25:00.2299299Z [INFO] Done SpotBugs Analysis....\n2025-07-29T20:25:00.9449363Z [WARNING] Site model of 'org.kohsuke:github-api-bridged:jar:2.0-rc.4' for default locale is still using the old pre-version 2.0.0 model. You MUST migrate to the new model as soon as possible otherwise your build will break in the future!\n2025-07-29T20:25:00.9658654Z [INFO] Rendering content with org.kohsuke:maven-skin:jar:1.2 skin\n2025-07-29T20:25:01.4360715Z [INFO] \n2025-07-29T20:25:01.4361760Z [INFO] <<< spotbugs:4.9.3.0:check (run-spotbugs) < :spotbugs @ github-api-bridged <<<\n2025-07-29T20:25:01.4362774Z [INFO] \n2025-07-29T20:25:01.4363601Z [INFO] \n2025-07-29T20:25:01.4364417Z [INFO] --- spotbugs:4.9.3.0:check (run-spotbugs) @ github-api-bridged ---\n2025-07-29T20:25:01.4877054Z [INFO] BugInstance size is 0\n2025-07-29T20:25:01.4879822Z [INFO] Error size is 0\n2025-07-29T20:25:01.4886452Z [INFO] No errors/warnings found\n2025-07-29T20:25:01.4887183Z [INFO] \n2025-07-29T20:25:01.4887983Z [INFO] --- gpg:3.2.7:sign (sign-artifacts) @ github-api-bridged ---\n2025-07-29T20:25:01.5676590Z [INFO] Signer 'gpg' is signing 4 files with key default\n2025-07-29T20:25:02.5969472Z [INFO] \n2025-07-29T20:25:02.5970416Z [INFO] --- jacoco:0.8.12:report-integration (report) @ github-api-bridged ---\n2025-07-29T20:25:02.5998704Z [INFO] Skipping JaCoCo execution due to missing execution data file.\n2025-07-29T20:25:02.6000035Z [INFO] \n2025-07-29T20:25:02.6001071Z [INFO] --- jacoco:0.8.12:check (check) @ github-api-bridged ---\n2025-07-29T20:25:02.6069572Z [INFO] Skipping JaCoCo execution due to missing execution data file:/home/runner/work/github-api/github-api/target/jacoco-it.exec\n2025-07-29T20:25:02.6076175Z [INFO] \n2025-07-29T20:25:02.6077039Z [INFO] --- install:3.1.2:install (default-install) @ github-api-bridged ---\n2025-07-29T20:25:02.6323580Z [INFO] Installing /home/runner/work/github-api/github-api/pom.xml to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom\n2025-07-29T20:25:02.6332255Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:25:02.6355514Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:25:02.6376191Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:25:02.6386456Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc\n2025-07-29T20:25:02.6396073Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.pom.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc\n2025-07-29T20:25:02.6399252Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc\n2025-07-29T20:25:02.6402537Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc\n2025-07-29T20:25:02.6437367Z [INFO] \n2025-07-29T20:25:02.6438347Z [INFO] --- nexus-staging:1.7.0:deploy (injected-nexus-deploy) @ github-api-bridged ---\n2025-07-29T20:25:02.6570971Z [INFO] Performing local staging (local stagingDirectory=\"/home/runner/work/github-api/github-api/target/nexus-staging/staging\")...\n2025-07-29T20:25:02.6591567Z [INFO] + Using server credentials \"sonatype-nexus-staging\" from Maven settings.\n2025-07-29T20:25:03.4301873Z [INFO] * Connected to Nexus at https://ossrh-staging-api.central.sonatype.com:443/, is version 2.15.1-02 and edition \"Professional\"\n2025-07-29T20:25:03.6756020Z [INFO] * Using staging profile ID \"org.kohsuke\" (matched by Nexus).\n2025-07-29T20:25:03.6791917Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:25:03.6803873Z [INFO] Installing /home/runner/work/github-api/github-api/pom.xml to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom\n2025-07-29T20:25:03.6829619Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:25:03.6863148Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:25:03.6878197Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc\n2025-07-29T20:25:03.6892786Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.pom.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc\n2025-07-29T20:25:03.6906107Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc\n2025-07-29T20:25:03.6913739Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc\n2025-07-29T20:25:03.6922958Z [INFO] Performing remote staging...\n2025-07-29T20:25:03.6924739Z [INFO] \n2025-07-29T20:25:03.6926171Z [INFO] * Remote staging into staging profile ID \"org.kohsuke\"\n2025-07-29T20:25:04.0610456Z [INFO] * Created staging repository with ID \"org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17\".\n2025-07-29T20:25:04.0612663Z [INFO] * Staging repository at https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17\n2025-07-29T20:25:04.0614508Z [INFO] * Uploading locally staged artifacts to profile org.kohsuke\n2025-07-29T20:25:04.0659242Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc\n2025-07-29T20:25:04.6077033Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc (488 B at 900 B/s)\n2025-07-29T20:25:04.6081763Z [INFO] Downloading from sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:25:04.7329231Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:25:05.3348018Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/maven-metadata.xml (315 B at 523 B/s)\n2025-07-29T20:25:05.3364339Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc\n2025-07-29T20:25:05.6253859Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc (488 B at 1.7 kB/s)\n2025-07-29T20:25:05.6261209Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc\n2025-07-29T20:25:05.8646568Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc (488 B at 2.0 kB/s)\n2025-07-29T20:25:05.8654406Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:25:07.2160449Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar (2.4 MB at 1.8 MB/s)\n2025-07-29T20:25:07.2169227Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:25:08.0248105Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar (653 kB at 808 kB/s)\n2025-07-29T20:25:08.0251530Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom\n2025-07-29T20:25:08.7545703Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom (36 kB at 50 kB/s)\n2025-07-29T20:25:08.7558010Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:25:09.4824315Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar (381 kB at 524 kB/s)\n2025-07-29T20:25:09.4830753Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc\n2025-07-29T20:25:09.7329585Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc (488 B at 2.0 kB/s)\n2025-07-29T20:25:09.7332314Z [INFO] * Upload of locally staged artifacts finished.\n2025-07-29T20:25:09.7333893Z [INFO] * Closing staging repository with ID \"org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17\".\n2025-07-29T20:25:21.0027055Z [ERROR] Remote staging finished with a failure: 400 - Bad Request\n2025-07-29T20:25:21.0033011Z [INFO] ------------------------------------------------------------------------\n2025-07-29T20:25:21.0034141Z [INFO] BUILD FAILURE\n2025-07-29T20:25:21.0035177Z [INFO] ------------------------------------------------------------------------\n2025-07-29T20:25:21.0036666Z [INFO] Total time: 58.002 s\n2025-07-29T20:25:21.0037305Z [INFO] Finished at: 2025-07-29T20:25:21Z\n2025-07-29T20:25:21.0038257Z [INFO] ------------------------------------------------------------------------\n2025-07-29T20:25:21.0042398Z [ERROR] Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.7.0:deploy (injected-nexus-deploy) on project github-api-bridged: Remote staging failed: 400 - Bad Request -> [Help 1]\n2025-07-29T20:25:21.0044028Z [ERROR] \n2025-07-29T20:25:21.0044784Z [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.\n2025-07-29T20:25:21.0045816Z [ERROR] Re-run Maven using the -X switch to enable full debug logging.\n2025-07-29T20:25:21.0046617Z [ERROR] \n2025-07-29T20:25:21.0047546Z [ERROR] For more information about the errors and possible solutions, please read the following articles:\n2025-07-29T20:25:21.0048439Z [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException\n2025-07-29T20:25:21.0544587Z ##[error]Process completed with exit code 1.\n2025-07-29T20:25:21.0652621Z Post job cleanup.\n2025-07-29T20:25:21.2338798Z Removing private key from keychain\n2025-07-29T20:25:21.2639433Z Post job cleanup.\n2025-07-29T20:25:21.3579766Z [command]/usr/bin/git version\n2025-07-29T20:25:21.3623859Z git version 2.50.1\n2025-07-29T20:25:21.3669780Z Temporarily overriding HOME='/home/runner/work/_temp/f63c6d9c-0210-4993-9eab-7c153795d64a' before making global git config changes\n2025-07-29T20:25:21.3671649Z Adding repository directory to the temporary git global config as a safe directory\n2025-07-29T20:25:21.3685669Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/github-api/github-api\n2025-07-29T20:25:21.3725232Z [command]/usr/bin/git config --local --name-only --get-regexp core\\.sshCommand\n2025-07-29T20:25:21.3760717Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'core\\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :\"\n2025-07-29T20:25:21.4023643Z [command]/usr/bin/git config --local --name-only --get-regexp http\\.https\\:\\/\\/github\\.com\\/\\.extraheader\n2025-07-29T20:25:21.4049117Z http.https://github.com/.extraheader\n2025-07-29T20:25:21.4062530Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader\n2025-07-29T20:25:21.4096473Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'http\\.https\\:\\/\\/github\\.com\\/\\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :\"\n2025-07-29T20:25:21.4481669Z Cleaning up orphan processes\n```", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2120/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2145", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/events", + "html_url": "https://github.com/hub4j/github-api/issues/2145", + "id": 3451557731, + "node_id": "I_kwDOAAlq-s7Nupdj", + "number": 2145, + "title": "How to extract the dependencies of a repository?", + "user": { + "login": "tohidemyname", + "id": 42423544, + "node_id": "MDQ6VXNlcjQyNDIzNTQ0", + "avatar_url": "https://avatars.githubusercontent.com/u/42423544?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/tohidemyname", + "html_url": "https://github.com/tohidemyname", + "followers_url": "https://api.github.com/users/tohidemyname/followers", + "following_url": "https://api.github.com/users/tohidemyname/following{/other_user}", + "gists_url": "https://api.github.com/users/tohidemyname/gists{/gist_id}", + "starred_url": "https://api.github.com/users/tohidemyname/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/tohidemyname/subscriptions", + "organizations_url": "https://api.github.com/users/tohidemyname/orgs", + "repos_url": "https://api.github.com/users/tohidemyname/repos", + "events_url": "https://api.github.com/users/tohidemyname/events{/privacy}", + "received_events_url": "https://api.github.com/users/tohidemyname/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2025-09-25T02:12:02Z", + "updated_at": "2025-10-23T18:12:16Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I notice that Github has a rest api to retrieve the dependencies of a repository:\n\nhttps://docs.github.com/en/rest/dependency-graph/sboms?apiVersion=2022-11-28#export-a-software-bill-of-materials-sbom-for-a-repository\n\nHowever, I did not find a corresponding API call in github-api. I tried to implement the api by myself:\n\n```\npublic List getDependGraph() throws IOException {\n\t\tDependence[] list = root().createRequest()\n\t .withUrlPath(getApiTailUrl(\"dependency-graph/sbom\"))\n\t .fetch(Dependence[].class);\n\t return Arrays.asList(list);\n\t\t\n\t}\n```\n\nThe above code returns a 404 error:\n\n```\norg.kohsuke.github.GHFileNotFoundException: https://api.github.com/repos/sgtest/pinned-lucene/stats/dependency-graph/sbom {\n \"message\": \"Not Found\",\n \"documentation_url\": \"https://docs.github.com/rest\",\n \"status\": \"404\"\n}\n```\n\nI tried to call the url:\n`https://api.github.com/repos/sgtest/pinned-lucene/stats/dependency-graph/sbom`\n\nIt also returns a 404 error. \n\nIs this a problem in Github? Would you please give me some suggestions on how to implement the API for github-api?", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2145/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2106", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/events", + "html_url": "https://github.com/hub4j/github-api/issues/2106", + "id": 3128804786, + "node_id": "I_kwDOAAlq-s66fcWy", + "number": 2106, + "title": "GHPullRequestReviewComment.getLine() always returns -1", + "user": { + "login": "tsantalis", + "id": 1483516, + "node_id": "MDQ6VXNlcjE0ODM1MTY=", + "avatar_url": "https://avatars.githubusercontent.com/u/1483516?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/tsantalis", + "html_url": "https://github.com/tsantalis", + "followers_url": "https://api.github.com/users/tsantalis/followers", + "following_url": "https://api.github.com/users/tsantalis/following{/other_user}", + "gists_url": "https://api.github.com/users/tsantalis/gists{/gist_id}", + "starred_url": "https://api.github.com/users/tsantalis/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/tsantalis/subscriptions", + "organizations_url": "https://api.github.com/users/tsantalis/orgs", + "repos_url": "https://api.github.com/users/tsantalis/repos", + "events_url": "https://api.github.com/users/tsantalis/events{/privacy}", + "received_events_url": "https://api.github.com/users/tsantalis/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-06-09T00:16:26Z", + "updated_at": "2025-10-23T18:06:05Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\nGHPullRequestReviewComment.getLine() API does not return accurate value.\nAs a matter of fact it always returns -1\n\n**To Reproduce**\nSteps to reproduce the behavior:\nFor the following PR review comment the line is 422\nhttps://api.github.com/repos/JabRef/jabref/pulls/comments/2127829134\n```java\n//PR URL: https://github.com/JabRef/jabref/pull/11845\nGHRepository repository = ...;\nGHPullRequest pullRequest = repository.getPullRequest(11845);\nPagedIterable reviews = pullRequest.listReviews();\n\nfor (GHPullRequestReview review : reviews) {\n PagedIterable comments = review.listReviewComments();\n for (GHPullRequestReviewComment comment : comments) {\n String path = comment.getPath();\n int lineNumber = comment.getLine();\n }\n}\n```\n\n**Expected behavior**\nThe line number for\nhttps://api.github.com/repos/JabRef/jabref/pulls/comments/2127829134\nshould be 422 instead of -1\n\n**Desktop (please complete the following information):**\n - OS: iOS\n - Browser [Firefox]\n - Version [139]\n\n**Additional context**\nAdd any other context about the problem here.\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2106/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2126", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/events", + "html_url": "https://github.com/hub4j/github-api/issues/2126", + "id": 3327323318, + "node_id": "I_kwDOAAlq-s7GUuy2", + "number": 2126, + "title": "Update documentation on pluggable Http Client ", + "user": { + "login": "ErrorxCode", + "id": 65817230, + "node_id": "MDQ6VXNlcjY1ODE3MjMw", + "avatar_url": "https://avatars.githubusercontent.com/u/65817230?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ErrorxCode", + "html_url": "https://github.com/ErrorxCode", + "followers_url": "https://api.github.com/users/ErrorxCode/followers", + "following_url": "https://api.github.com/users/ErrorxCode/following{/other_user}", + "gists_url": "https://api.github.com/users/ErrorxCode/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ErrorxCode/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ErrorxCode/subscriptions", + "organizations_url": "https://api.github.com/users/ErrorxCode/orgs", + "repos_url": "https://api.github.com/users/ErrorxCode/repos", + "events_url": "https://api.github.com/users/ErrorxCode/events{/privacy}", + "received_events_url": "https://api.github.com/users/ErrorxCode/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 2070644911, + "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", + "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", + "name": "documentation", + "color": "6ee5cb", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-08-16T14:21:39Z", + "updated_at": "2025-10-23T18:02:32Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "The Library uses Java HttpClient, which was removed in Android 7. Using this library on > Android 7 results in the following error:\n\n`NoClassDefFoundError: Failed resolution of: Ljava/net/http/HttpClient;`\n\n\n**To Reproduce**\nRun `GitHub.connectUsingOAuth()` on android (API > 24)\n\n**Expected behaviour**\nNo error, connection established\n\n**Desktop (please complete the following information):**\n - OS: Android\n - Version 16\n\n\nPlease migrate from java **HttpClient** to OkHttp to keep wider support", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2126/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2009", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/events", + "html_url": "https://github.com/hub4j/github-api/issues/2009", + "id": 2789691143, + "node_id": "I_kwDOAAlq-s6mR08H", + "number": 2009, + "title": "`GitHubAbuseLimitHandler#isError` fails to detect some secondary rate limit errors", + "user": { + "login": "yrodiere", + "id": 412878, + "node_id": "MDQ6VXNlcjQxMjg3OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/412878?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yrodiere", + "html_url": "https://github.com/yrodiere", + "followers_url": "https://api.github.com/users/yrodiere/followers", + "following_url": "https://api.github.com/users/yrodiere/following{/other_user}", + "gists_url": "https://api.github.com/users/yrodiere/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yrodiere/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yrodiere/subscriptions", + "organizations_url": "https://api.github.com/users/yrodiere/orgs", + "repos_url": "https://api.github.com/users/yrodiere/repos", + "events_url": "https://api.github.com/users/yrodiere/events{/privacy}", + "received_events_url": "https://api.github.com/users/yrodiere/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 9, + "created_at": "2025-01-15T12:24:43Z", + "updated_at": "2025-09-05T19:31:30Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "(Maintainer's note: see also #1975 )\n**Describe the bug**\n\n#1895 attempted to detect more errors related to secondary rate limits, but it seems there are more.\n\nIt appears GitHub APIs -- https://api.github.com/search/issues in particular, maybe more -- can hit a secondary limit and just return a 403 error, with no particular header indicating that a limit was reached. No `Retry-After`, no `gh-limited-by`, nothing. Only the body response explains \"You have exceeded a secondary rate limit. Please wait a few minutes before you try again\". (and in fact waiting 30s/1min is enough).\n\nThis, understandably, doesn't get caught by `GitHubAbuseLimitHandler#isError`, and results in the request simply failing.\n\n**To Reproduce**\n\nSend the following request a few dozen times (or just a dozen when unauthenticated):\n\nhttps://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581\n\nObviously my actual use case is not to send the _same_ request over and over, but it's enough to reproduce the problem.\n\nInterestingly, you can just click that URL in your browser, refresh quickly a couple times, and you'll be able to observe the exact error I'm running into: HTTP 403 with no particular retry header.\n\nSee bottom of this messsage for more logs.\n\n**Expected behavior**\n\nIdeally, I'd expect such requests to be detected as secondary rate limit errors, and the client to just wait and retry. For my use case it's fine to wait a minute.\n\nFailing that, I'd settle for a way to override `GitHubAbuseLimitHandler#isError` and implement some dirty logic based on the response body in there. But this method is currently package-protected.\n\n**Desktop (please complete the following information):**\n - OS: Fedora 41\n - Browser [e.g. chrome, safari]: no browser involved\n - Version [e.g. 22]: no browser involved\n\n**Additional context**\n\nHere is a failing request/response with all details/headers. I got it using `-Djdk.httpclient.HttpClient.log=all`.\n\n```\n2025-01-15 13:04:53,295 INFO [jdk.htt.HttpClient] (executor-thread-1) REQUEST: https://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581 GET\n2025-01-15 13:04:53,295 INFO [jdk.htt.HttpClient] (executor-thread-1) HEADERS: REQUEST HEADERS:\nGET /search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581 HTTP/1.1\nContent-Length: 0\nHost: api.github.com\nUser-Agent: Java-http-client/17.0.13\nAccept: application/vnd.github+json\nAccept-Encoding: gzip\nAuthorization: token \nX-GitHub-Api-Version: 2022-11-28\n\n\n2025-01-15 13:04:53,422 INFO [jdk.htt.HttpClient] (HttpClient-3-Worker-0) HEADERS: RESPONSE HEADERS:\n access-control-allow-origin: *\n access-control-expose-headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset\n content-encoding: gzip\n content-security-policy: default-src 'none'\n content-type: application/json; charset=utf-8\n date: Wed, 15 Jan 2025 12:04:53 GMT\n referrer-policy: origin-when-cross-origin, strict-origin-when-cross-origin\n server: github.com\n strict-transport-security: max-age=31536000; includeSubdomains; preload\n transfer-encoding: chunked\n vary: Accept-Encoding, Accept, X-Requested-With\n x-content-type-options: nosniff\n x-frame-options: deny\n x-github-api-version-selected: 2022-11-28\n x-github-media-type: github.v3; format=json\n x-github-request-id: \n x-ratelimit-limit: 30\n x-ratelimit-remaining: 21\n x-ratelimit-reset: 1736942747\n x-ratelimit-resource: search\n x-ratelimit-used: 9\n x-xss-protection: 0\n\n\n2025-01-15 13:04:53,423 INFO [jdk.htt.HttpClient] (HttpClient-3-Worker-0) RESPONSE: (GET https://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581) 403 HTTP_1_1 Local port: 57158\n```\n\nI end up with this error, proving the secondary limit error wasn't detected:\n\n```\norg.kohsuke.github.GHException: Failed to retrieve https://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581\n at org.kohsuke.github.GitHubPageIterator.fetch(GitHubPageIterator.java:157)\n at org.kohsuke.github.GitHubPageIterator.hasNext(GitHubPageIterator.java:93)\n at org.kohsuke.github.PagedSearchIterable$1.hasNext(PagedSearchIterable.java:111)\n at org.kohsuke.github.PagedIterator.fetch(PagedIterator.java:116)\n at org.kohsuke.github.PagedIterator.hasNext(PagedIterator.java:84)\n at java.base/java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1855)\n at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.lambda$initPartialTraversalState$0(StreamSpliterators.java:292)\n at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(StreamSpliterators.java:206)\n at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(StreamSpliterators.java:161)\n at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:298)\n at java.base/java.util.Spliterators$1Adapter.hasNext(Spliterators.java:681)\n at io.quarkus.github.lottery.draw.Lottery$Draw.runSingleRound(Lottery.java:286)\n at io.quarkus.github.lottery.draw.Lottery.draw(Lottery.java:80)\n at io.quarkus.github.lottery.LotteryService.doDrawForRepository(LotteryService.java:109)\n at io.quarkus.github.lottery.LotteryService.drawForRepository(LotteryService.java:82)\n at io.quarkus.github.lottery.LotteryService.draw(LotteryService.java:66)\n at io.quarkus.github.lottery.LotteryService_ClientProxy.draw(Unknown Source)\n at io.quarkus.github.lottery.LotteryCli$DrawCommand.run(LotteryCli.java:27)\n at io.quarkus.github.lottery.LotteryCliCommandDispatcherImpl.dispatch(Unknown Source)\n at io.quarkus.github.lottery.LotteryCliCommandDispatcherImpl_Multiplexer.dispatch_9c21b751bd1c3c76c9e9f8d4cbcacbc05e9e7ed7(Unknown Source)\n at io.quarkus.github.lottery.LotteryCliCommandDispatcherImpl_Multiplexer_Observer_dispatch_9c21b751bd1c3c76c9e9f8d4cbcacbc05e9e7ed7_usg3oRfZFhFtsdK_zfgxrYi5m6Q.notify(Unknown Source)\n at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:351)\n at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:333)\n at io.quarkus.arc.impl.EventImpl$1.get(EventImpl.java:110)\n at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)\n at io.quarkus.vertx.core.runtime.VertxCoreRecorder$15.runWith(VertxCoreRecorder.java:637)\n at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)\n at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2654)\n at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)\n at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)\n at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)\n at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)\n at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n at java.base/java.lang.Thread.run(Thread.java:840)\nCaused by: org.kohsuke.github.HttpException: {\n \"documentation_url\": \"https://docs.github.com/free-pro-team@latest/rest/overview/rate-limits-for-the-rest-api#about-secondary-rate-limits\",\n \"message\": \"You have exceeded a secondary rate limit. Please wait a few minutes before you try again. If you reach out to GitHub Support for help, please include the request ID 6F00:24CFC5:.\"\n}\n at org.kohsuke.github.GitHubConnectorResponseErrorHandler$1.onError(GitHubConnectorResponseErrorHandler.java:83)\n at org.kohsuke.github.GitHubClient.detectKnownErrors(GitHubClient.java:504)\n at org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:464)\n at org.kohsuke.github.GitHubPageIterator.fetch(GitHubPageIterator.java:146)\n ... 33 more\n```", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2009/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1975", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/events", + "html_url": "https://github.com/hub4j/github-api/issues/1975", + "id": 2604556081, + "node_id": "I_kwDOAAlq-s6bPl8x", + "number": 1975, + "title": "Implement \"Secondary rate limit\" behavior to internally throttle querying ", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2024-10-22T07:39:26Z", + "updated_at": "2025-09-04T16:55:29Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "See #1805 \nSee #1842 \nSee #2009\n\nThis docs page describes secondary rate limit behavior: \nhttps://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#about-secondary-rate-limits\n\nAs of this reading it says: \n> You may encounter a secondary rate limit if you:\n\n> \n> * Make too many concurrent requests. No more than 100 concurrent requests are allowed. This limit is shared across the REST API and GraphQL API.\n> * Make too many requests to a single endpoint per minute. No more than 900 points per minute are allowed for REST API endpoints, and no more than 2,000 points per minute are allowed for the GraphQL API endpoint. For more information about points, see \"[Calculating points for the secondary rate limit](https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#calculating-points-for-the-secondary-rate-limit).\"\n> * Make too many requests per minute. No more than 90 seconds of CPU time per 60 seconds of real time is allowed. No more than 60 seconds of this CPU time may be for the GraphQL API. You can roughly estimate the CPU time by measuring the total response time for your API requests.\n> * Create too much content on GitHub in a short amount of time. In general, no more than 80 content-generating requests per minute and no more than 500 content-generating requests per hour are allowed. Some endpoints have lower content creation limits. Content creation limits include actions taken on the GitHub web interface as well as via the REST API and GraphQL API.\n> \n> These secondary rate limits are subject to change without notice. You may also encounter a secondary rate limit for undisclosed reasons.\n\nThese are incredibly loosely defined guides and you cannot query for them ahead of time. 👎 It looks like we need to take the path some users have suggested and make rate limiting much more resilient, potentially allowing users to write their own rate limit strategies for handling secondary rate limits. \n\nThe current internal `GitHubRateLimitChecker` would need to be replaced by a `PrimaryGitHubRateLimiter` which extends a new `GitHubRateLimiter` class/interface. Then each of the above bullet points would become a new rate limit tracking/enforcing class. All of them would need to be called before and after each query, and maintain their own configuration and calculated state. `GitHubRateLimiter` would provide the API and possibly helper functions to make that easier to do right. \n\nI think the basic API would be that the method call before a request is sent, would return an `Optional` and if more than one limiter returns a Duration the longest one is used. Or maybe return an optional record that includes a `reason` message and a duration, perhaps also a logLevel/severity. Make it easier to produce meaningful output. \n\n\n ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1975/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2115", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/events", + "html_url": "https://github.com/hub4j/github-api/issues/2115", + "id": 3234980989, + "node_id": "I_kwDOAAlq-s7A0eR9", + "number": 2115, + "title": "Search API does not support advanced search will stop working on September 4, 2025", + "user": { + "login": "donce", + "id": 1409983, + "node_id": "MDQ6VXNlcjE0MDk5ODM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1409983?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/donce", + "html_url": "https://github.com/donce", + "followers_url": "https://api.github.com/users/donce/followers", + "following_url": "https://api.github.com/users/donce/following{/other_user}", + "gists_url": "https://api.github.com/users/donce/gists{/gist_id}", + "starred_url": "https://api.github.com/users/donce/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/donce/subscriptions", + "organizations_url": "https://api.github.com/users/donce/orgs", + "repos_url": "https://api.github.com/users/donce/repos", + "events_url": "https://api.github.com/users/donce/events{/privacy}", + "received_events_url": "https://api.github.com/users/donce/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-07-16T08:24:12Z", + "updated_at": "2025-07-16T08:26:16Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "`GHPullRequestSearchBuilder` is built on the previous GitHub API, which does not use advanced search.\n\nOn September 4, 2025, advanced search will be enabled by default, but currently, it's not supported (from [docs](https://docs.github.com/en/rest/search/search?apiVersion=2022-11-28#search-issues-and-pull-requests)):\n\n>Warning\n>Notice: Search for issues and pull requests will be overridden by advanced search on September 4, 2025. You can read more about this change on [the GitHub blog](https://github.blog/changelog/2025-03-06-github-issues-projects-api-support-for-issues-advanced-search-and-more/).\n\nI think the github client should support that - as an opt-in now, but after September 4, it will be the only possible way.\n\n\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2115/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2102", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/events", + "html_url": "https://github.com/hub4j/github-api/issues/2102", + "id": 3072490567, + "node_id": "I_kwDOAAlq-s63InxH", + "number": 2102, + "title": "Cannot retrieve author from github release", + "user": { + "login": "solonovamax", + "id": 46940694, + "node_id": "MDQ6VXNlcjQ2OTQwNjk0", + "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/solonovamax", + "html_url": "https://github.com/solonovamax", + "followers_url": "https://api.github.com/users/solonovamax/followers", + "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", + "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", + "organizations_url": "https://api.github.com/users/solonovamax/orgs", + "repos_url": "https://api.github.com/users/solonovamax/repos", + "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", + "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-05-19T04:52:41Z", + "updated_at": "2025-05-24T16:47:22Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\nAuthor (`GHUser`) is not included in the `GHRelease` object, even though it is present in the api response.\n\nUnsure if this behaviour was changed in some past api update.\n\n**Expected behavior**\nAuthor is included.\n\n**Additional context**\napi docs: https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#list-releases\n\nexample api response:\n```json\n[\n {\n \"url\": \"https://api.github.com/repos/hashicorp/terraform/releases/218598268\",\n \"assets_url\": \"https://api.github.com/repos/hashicorp/terraform/releases/218598268/assets\",\n \"upload_url\": \"https://uploads.github.com/repos/hashicorp/terraform/releases/218598268/assets{?name,label}\",\n \"html_url\": \"https://github.com/hashicorp/terraform/releases/tag/v1.12.0\",\n \"id\": 218598268,\n \"author\": {\n \"login\": \"hc-github-team-es-release-engineering\",\n \"id\": 82989873,\n \"node_id\": \"MDQ6VXNlcjgyOTg5ODcz\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/82989873?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/hc-github-team-es-release-engineering\",\n \"html_url\": \"https://github.com/hc-github-team-es-release-engineering\",\n \"followers_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/followers\",\n \"following_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/orgs\",\n \"repos_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/repos\",\n \"events_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/received_events\",\n \"type\": \"User\",\n \"user_view_type\": \"public\",\n \"site_admin\": false\n },\n \"node_id\": \"RE_kwDOAQ6CpM4NB4t8\",\n \"tag_name\": \"v1.12.0\",\n \"target_commitish\": \"f9e9a59d7b5b48acf343e07fab768464bcdde4d7\",\n \"name\": \"v1.12.0\",\n \"draft\": false,\n \"prerelease\": false,\n \"created_at\": \"2025-05-14T14:11:25Z\",\n \"published_at\": \"2025-05-14T15:15:45Z\",\n \"assets\": [],\n \"tarball_url\": \"https://api.github.com/repos/hashicorp/terraform/tarball/v1.12.0\",\n \"zipball_url\": \"https://api.github.com/repos/hashicorp/terraform/zipball/v1.12.0\",\n \"body\": \"[truncated for brevity]\",\n \"reactions\": {\n \"url\": \"https://api.github.com/repos/hashicorp/terraform/releases/218598268/reactions\",\n \"total_count\": 11,\n \"+1\": 1,\n \"-1\": 0,\n \"laugh\": 0,\n \"hooray\": 0,\n \"confused\": 0,\n \"heart\": 0,\n \"rocket\": 10,\n \"eyes\": 0\n }\n }\n]\n```", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2102/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2083", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/events", + "html_url": "https://github.com/hub4j/github-api/issues/2083", + "id": 2980993460, + "node_id": "I_kwDOAAlq-s6xrlm0", + "number": 2083, + "title": "OSGi Manifest - add maven plugin", + "user": { + "login": "stbischof", + "id": 33224746, + "node_id": "MDQ6VXNlcjMzMjI0NzQ2", + "avatar_url": "https://avatars.githubusercontent.com/u/33224746?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/stbischof", + "html_url": "https://github.com/stbischof", + "followers_url": "https://api.github.com/users/stbischof/followers", + "following_url": "https://api.github.com/users/stbischof/following{/other_user}", + "gists_url": "https://api.github.com/users/stbischof/gists{/gist_id}", + "starred_url": "https://api.github.com/users/stbischof/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/stbischof/subscriptions", + "organizations_url": "https://api.github.com/users/stbischof/orgs", + "repos_url": "https://api.github.com/users/stbischof/repos", + "events_url": "https://api.github.com/users/stbischof/events{/privacy}", + "received_events_url": "https://api.github.com/users/stbischof/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-04-08T21:30:08Z", + "updated_at": "2025-04-13T06:54:04Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I would like to use this lib in an OSGi Framework. For this i would need some Metadata in the Manifest.MF.\n\nI would create a PR that adds this support using the bnd-maven-plugin.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2083/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2082", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/events", + "html_url": "https://github.com/hub4j/github-api/issues/2082", + "id": 2973118122, + "node_id": "I_kwDOAAlq-s6xNi6q", + "number": 2082, + "title": "Update Wiremock to v3 and JUnit5", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + }, + { + "id": 1780165359, + "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", + "name": "breaking change", + "color": "b60205", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-04-04T18:38:07Z", + "updated_at": "2025-04-04T18:38:23Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "See \nhttps://wiremock.org/docs/junit-jupiter/\n\n GithubWireMockRule creates and manages multiple WireMockServers. Need to do the same for JUnit5 but not sure how composable the JUnit5 WireMock extension is. Might need to move to an abstract base test class that instantiates all the servers. \n\nI think v3 is Java 11+ only but if it isn't do that as well. ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2082/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2076", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/events", + "html_url": "https://github.com/hub4j/github-api/issues/2076", + "id": 2957281274, + "node_id": "I_kwDOAAlq-s6wRIf6", + "number": 2076, + "title": "Inconsistent use of glob imports", + "user": { + "login": "solonovamax", + "id": 46940694, + "node_id": "MDQ6VXNlcjQ2OTQwNjk0", + "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/solonovamax", + "html_url": "https://github.com/solonovamax", + "followers_url": "https://api.github.com/users/solonovamax/followers", + "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", + "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", + "organizations_url": "https://api.github.com/users/solonovamax/orgs", + "repos_url": "https://api.github.com/users/solonovamax/repos", + "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", + "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-03-28T21:25:41Z", + "updated_at": "2025-03-29T18:00:33Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Some classes use glob imports, while others don't. The use of glob imports across files seems to be rather inconsistent.\n\nCurrently, with spotless, there doesn't seem to be a way to enforce using/disallowing glob imports, however there is an open issue for it: https://github.com/diffplug/spotless/issues/649.\nSome comments on the issue suggest using\n```xml\n\n Remove wildcard imports\n import\\s+(?:static\\s+)?[^\\*\\s]+\\*;(\\r\\n|\\r|\\n)\n $1\n\n```\nto remove all the glob imports, however this solution will simply remove them and won't replace them with the appropriate imports, causing the compile to fail.\n\nOpened due to discussion in #2074", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2076/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2075", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/events", + "html_url": "https://github.com/hub4j/github-api/issues/2075", + "id": 2957271743, + "node_id": "I_kwDOAAlq-s6wRGK_", + "number": 2075, + "title": "Inconsistent use of license header", + "user": { + "login": "solonovamax", + "id": 46940694, + "node_id": "MDQ6VXNlcjQ2OTQwNjk0", + "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/solonovamax", + "html_url": "https://github.com/solonovamax", + "followers_url": "https://api.github.com/users/solonovamax/followers", + "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", + "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", + "organizations_url": "https://api.github.com/users/solonovamax/orgs", + "repos_url": "https://api.github.com/users/solonovamax/repos", + "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", + "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-03-28T21:21:56Z", + "updated_at": "2025-03-29T18:00:16Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "There is an inconsistent use of the license header.\nCurrently, some files have a license header added, but others don't.\n\nSince you're using spotless, it can be used to enforce the license header:\nhttps://github.com/diffplug/spotless/tree/main/plugin-maven#license-header\n\nOpened due to discussion in #2074", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2075/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2058", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/events", + "html_url": "https://github.com/hub4j/github-api/issues/2058", + "id": 2913781594, + "node_id": "I_kwDOAAlq-s6trMda", + "number": 2058, + "title": "Enable hiding of comments", + "user": { + "login": "koppor", + "id": 1366654, + "node_id": "MDQ6VXNlcjEzNjY2NTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1366654?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/koppor", + "html_url": "https://github.com/koppor", + "followers_url": "https://api.github.com/users/koppor/followers", + "following_url": "https://api.github.com/users/koppor/following{/other_user}", + "gists_url": "https://api.github.com/users/koppor/gists{/gist_id}", + "starred_url": "https://api.github.com/users/koppor/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/koppor/subscriptions", + "organizations_url": "https://api.github.com/users/koppor/orgs", + "repos_url": "https://api.github.com/users/koppor/repos", + "events_url": "https://api.github.com/users/koppor/events{/privacy}", + "received_events_url": "https://api.github.com/users/koppor/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2025-03-12T12:20:51Z", + "updated_at": "2025-03-28T16:33:37Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I have comment count 3, but the PR has much more: https://github.com/JabRef/jabref/pull/12710\n\nI \"deleted\" the other comments using `comment.delete()`. It seems this has no effect on the UI.\n\nIn the UI, one can use \"Hide\"\n\n![Image](https://github.com/user-attachments/assets/5522c8c3-0764-49bf-bcc1-86a472b24d06)\n\n![Image](https://github.com/user-attachments/assets/623772ef-30b7-4b04-bac7-abc174289702)\n\nShould be possible via API, too?", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2058/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/timeline", + "performed_via_github_app": null, + "state_reason": "reopened", + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1454", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/events", + "html_url": "https://github.com/hub4j/github-api/issues/1454", + "id": 1229507490, + "node_id": "I_kwDOAAlq-s5JSMui", + "number": 1454, + "title": "Please provide streaming for upload large content ", + "user": { + "login": "Vampire", + "id": 325196, + "node_id": "MDQ6VXNlcjMyNTE5Ng==", + "avatar_url": "https://avatars.githubusercontent.com/u/325196?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Vampire", + "html_url": "https://github.com/Vampire", + "followers_url": "https://api.github.com/users/Vampire/followers", + "following_url": "https://api.github.com/users/Vampire/following{/other_user}", + "gists_url": "https://api.github.com/users/Vampire/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Vampire/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Vampire/subscriptions", + "organizations_url": "https://api.github.com/users/Vampire/orgs", + "repos_url": "https://api.github.com/users/Vampire/repos", + "events_url": "https://api.github.com/users/Vampire/events{/privacy}", + "received_events_url": "https://api.github.com/users/Vampire/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 7, + "created_at": "2022-05-09T10:34:22Z", + "updated_at": "2025-03-26T18:56:07Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I have a Gradle build where I build a Docker image tar file which has a size of 166 MiB.\r\nI use the GitHub publish Gradle plugin and tried to upload this Docker image as asset to the release.\r\nThis consistently resulted in an `OutOfMemoryError`.\r\n\r\nThe GitHub publish Gradle plugin under the hood uses this library.\r\nAnd I also easily reproduced it stand-alone.\r\nIn version 1.1xx, you use an `HttpsUrlConnection` without setting it to fixed-length streaming or chunking mode and thus the JRE uses a byte-array output stream to colllect the whole body in RAM to determine the size up-front.\r\nIn version 1.3xx many things changed, but now you use your `GitHubRequest.Builder#with(java.io.InputStream)` method to load the whole file into RAM using `IOUtils.toByteArray`.\r\n\r\nSo at different places both load the whole file into RAM instead of properly streaming it.\r\nPlease support at least giving the size to methods like `uploadAsset` so that the size can be set as HTTP header but the content be streamed, or if GitHub supports it maybe even using chunked mode additionally if no explicit size was given.\r\n\r\nThe problem can pretty easily be reproduced using:\r\n```java\r\ngithub\r\n .getRepository(\"my/repository\")\r\n .listReleases()\r\n .iterator()\r\n .next()\r\n .uploadAsset(\"foo.tar.gz\", new FileInputStream(\"file/that/is/too/large/for/RAM\"), \"application/octet-stream\")\r\n```", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1454/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/timeline", + "performed_via_github_app": null, + "state_reason": "reopened", + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1967", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/events", + "html_url": "https://github.com/hub4j/github-api/issues/1967", + "id": 2564089274, + "node_id": "I_kwDOAAlq-s6Y1OW6", + "number": 1967, + "title": "Branch rename is missing", + "user": { + "login": "sbouchexbellomie-Philips", + "id": 182072604, + "node_id": "U_kgDOCto1HA", + "avatar_url": "https://avatars.githubusercontent.com/u/182072604?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sbouchexbellomie-Philips", + "html_url": "https://github.com/sbouchexbellomie-Philips", + "followers_url": "https://api.github.com/users/sbouchexbellomie-Philips/followers", + "following_url": "https://api.github.com/users/sbouchexbellomie-Philips/following{/other_user}", + "gists_url": "https://api.github.com/users/sbouchexbellomie-Philips/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sbouchexbellomie-Philips/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sbouchexbellomie-Philips/subscriptions", + "organizations_url": "https://api.github.com/users/sbouchexbellomie-Philips/orgs", + "repos_url": "https://api.github.com/users/sbouchexbellomie-Philips/repos", + "events_url": "https://api.github.com/users/sbouchexbellomie-Philips/events{/privacy}", + "received_events_url": "https://api.github.com/users/sbouchexbellomie-Philips/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2024-10-03T13:35:26Z", + "updated_at": "2025-03-23T07:25:04Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Ability to rename a branch is missing\r\n\r\nGHBranch.rename should be added", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1967/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1965", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/events", + "html_url": "https://github.com/hub4j/github-api/issues/1965", + "id": 2563920009, + "node_id": "I_kwDOAAlq-s6Y0lCJ", + "number": 1965, + "title": "Deployment deletion is missing", + "user": { + "login": "sbouchexbellomie-Philips", + "id": 182072604, + "node_id": "U_kgDOCto1HA", + "avatar_url": "https://avatars.githubusercontent.com/u/182072604?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sbouchexbellomie-Philips", + "html_url": "https://github.com/sbouchexbellomie-Philips", + "followers_url": "https://api.github.com/users/sbouchexbellomie-Philips/followers", + "following_url": "https://api.github.com/users/sbouchexbellomie-Philips/following{/other_user}", + "gists_url": "https://api.github.com/users/sbouchexbellomie-Philips/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sbouchexbellomie-Philips/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sbouchexbellomie-Philips/subscriptions", + "organizations_url": "https://api.github.com/users/sbouchexbellomie-Philips/orgs", + "repos_url": "https://api.github.com/users/sbouchexbellomie-Philips/repos", + "events_url": "https://api.github.com/users/sbouchexbellomie-Philips/events{/privacy}", + "received_events_url": "https://api.github.com/users/sbouchexbellomie-Philips/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2024-10-03T12:23:11Z", + "updated_at": "2025-03-23T07:24:47Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Ability to delete a deployment is missing\r\n\r\nGHDeployment.delete should be added\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1965/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2041", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/events", + "html_url": "https://github.com/hub4j/github-api/issues/2041", + "id": 2871292068, + "node_id": "I_kwDOAAlq-s6rJHCk", + "number": 2041, + "title": "should fromCredentials not be public?", + "user": { + "login": "maxandersen", + "id": 54129, + "node_id": "MDQ6VXNlcjU0MTI5", + "avatar_url": "https://avatars.githubusercontent.com/u/54129?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/maxandersen", + "html_url": "https://github.com/maxandersen", + "followers_url": "https://api.github.com/users/maxandersen/followers", + "following_url": "https://api.github.com/users/maxandersen/following{/other_user}", + "gists_url": "https://api.github.com/users/maxandersen/gists{/gist_id}", + "starred_url": "https://api.github.com/users/maxandersen/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/maxandersen/subscriptions", + "organizations_url": "https://api.github.com/users/maxandersen/orgs", + "repos_url": "https://api.github.com/users/maxandersen/repos", + "events_url": "https://api.github.com/users/maxandersen/events{/privacy}", + "received_events_url": "https://api.github.com/users/maxandersen/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2025-02-22T20:16:12Z", + "updated_at": "2025-03-23T07:21:59Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\nGithubBuilder.fromCredentials is not public and given the auth provider field is not public it is not possible to implement the \"honor .github and env\" manually.\n\nThus should that method not be public? \n\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2041/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1798", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/events", + "html_url": "https://github.com/hub4j/github-api/issues/1798", + "id": 2147359719, + "node_id": "I_kwDOAAlq-s5__hvn", + "number": 1798, + "title": "Maven central moving to new publishing model and plugin", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2024-02-21T17:52:31Z", + "updated_at": "2025-03-23T06:52:23Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "It looks like Sonatype is moving to a new model for publishing: \r\nhttps://github.com/sonatype/nexus-public/issues/110#issuecomment-1900500381\r\n\r\nThe project may need to re-register or do some other updates to work in the new system:\r\nhttps://central.sonatype.org/register/central-portal/\r\nhttps://central.sonatype.org/publish/publish-portal-maven/\r\n\r\nIt is still in preview, so this is not urgent. I've started work on this but don't have time to finish it now: \r\nhttps://github.com/hub4j/github-api/tree/feature/new-maven-central-publishing", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1798/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/521", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/521/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/521/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/521/events", + "html_url": "https://github.com/hub4j/github-api/issues/521", + "id": 447748493, + "node_id": "MDU6SXNzdWU0NDc3NDg0OTM=", + "number": 521, + "title": "GitHub v4 GraphQL API support", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 11, + "created_at": "2019-05-23T16:02:20Z", + "updated_at": "2025-03-19T17:33:15Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "The v4 API provides a much more customizable API based on GraphQL. It is out of scope for this library to provide a generalized API the fully leverages the power of GraphQL, but having some way to construct queries for trees of items would be useful. \r\n\r\nhttps://developer.github.com/v4/", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/521/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/521/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2060", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/events", + "html_url": "https://github.com/hub4j/github-api/issues/2060", + "id": 2922558598, + "node_id": "I_kwDOAAlq-s6uMrSG", + "number": 2060, + "title": "Issues with getMergeCommitSha", + "user": { + "login": "BradPlayerZero", + "id": 172313252, + "node_id": "U_kgDOCkVKpA", + "avatar_url": "https://avatars.githubusercontent.com/u/172313252?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/BradPlayerZero", + "html_url": "https://github.com/BradPlayerZero", + "followers_url": "https://api.github.com/users/BradPlayerZero/followers", + "following_url": "https://api.github.com/users/BradPlayerZero/following{/other_user}", + "gists_url": "https://api.github.com/users/BradPlayerZero/gists{/gist_id}", + "starred_url": "https://api.github.com/users/BradPlayerZero/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/BradPlayerZero/subscriptions", + "organizations_url": "https://api.github.com/users/BradPlayerZero/orgs", + "repos_url": "https://api.github.com/users/BradPlayerZero/repos", + "events_url": "https://api.github.com/users/BradPlayerZero/events{/privacy}", + "received_events_url": "https://api.github.com/users/BradPlayerZero/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-03-15T21:26:52Z", + "updated_at": "2025-03-18T21:06:41Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Two fixes needed for getMergeCommitSha:\n\n /**\n * See GitHub blog post\n *\n * @return the merge commit sha\n * @throws IOException\n * the io exception\n */\n public String getMergeCommitSha() throws IOException {\n populate();\n return merge_commit_sha;\n }\n\nFirst, GitHub has reversed themselves on deprecating merge_commit_id, so the comment should be removed.\n\nSecond, merge_commit_id is part of the list pull request API (get /repos/{owner}/{repo}/pulls), and required, so it should not call populate().\n\n\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2060/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2061", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/events", + "html_url": "https://github.com/hub4j/github-api/issues/2061", + "id": 2923132207, + "node_id": "I_kwDOAAlq-s6uO3Uv", + "number": 2061, + "title": "`GHIssue#isPullRequest` is false despite being a PR", + "user": { + "login": "Haarolean", + "id": 1494347, + "node_id": "MDQ6VXNlcjE0OTQzNDc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Haarolean", + "html_url": "https://github.com/Haarolean", + "followers_url": "https://api.github.com/users/Haarolean/followers", + "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", + "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", + "organizations_url": "https://api.github.com/users/Haarolean/orgs", + "repos_url": "https://api.github.com/users/Haarolean/repos", + "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", + "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-03-16T15:23:51Z", + "updated_at": "2025-03-17T10:37:01Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\n`isPullRequest` in GHIssue returns false due to `pull_request == null` condition. The PR object was acquired via `payload.getPullRequest()` method of `GHEventPayload.PullRequest` class.\n\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Get an instance of `GHEventPayload.PullRequest` event\n2. Get the pr entity via `payload.getPullRequest()`\n3. Observe that despite object being an instance of `GHPullRequest` the return value of `isPullRequest` method is false.\n\n**Expected behavior**\nexpected true", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2061/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2062", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/events", + "html_url": "https://github.com/hub4j/github-api/issues/2062", + "id": 2923159729, + "node_id": "I_kwDOAAlq-s6uO-Cx", + "number": 2062, + "title": "`branch.getProtection()` fails with an exception for ruleset-protected branch", + "user": { + "login": "Haarolean", + "id": 1494347, + "node_id": "MDQ6VXNlcjE0OTQzNDc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Haarolean", + "html_url": "https://github.com/Haarolean", + "followers_url": "https://api.github.com/users/Haarolean/followers", + "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", + "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", + "organizations_url": "https://api.github.com/users/Haarolean/orgs", + "repos_url": "https://api.github.com/users/Haarolean/repos", + "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", + "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-03-16T16:11:09Z", + "updated_at": "2025-03-17T10:34:17Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\nIf a branch (`GHBranch`) is protected via rulesets rather than classic (deprecated?) branch protection rules, `GHBranch#isProtected()` returns `true`, but `GHBranch#getProtection` desintegrates with the following exception:\n```\norg.kohsuke.github.GHFileNotFoundException: https://api.github.com/repos/ZooPets/kapybro-demo-dev/branches/main/protection {\"message\":\"Branch not protected\",\"documentation_url\":\"https://docs.github.com/rest/branches/branch-protection#get-branch-protection\",\"status\":\"404\"}\n\tat org.kohsuke.github.GitHubClient.interpretApiError(GitHubClient.java:661) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:480) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:427) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.Requester.fetch(Requester.java:85) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GHBranch.getProtection(GHBranch.java:112) ~[github-api-unbridged-1.318.jar:na]\n//omitted\nCaused by: java.io.FileNotFoundException: https://api.github.com/repos/ZooPets/kapybro-demo-dev/branches/main/protection\n\tat org.kohsuke.github.GitHubConnectorResponseErrorHandler$1.onError(GitHubConnectorResponseErrorHandler.java:60) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.detectKnownErrors(GitHubClient.java:504) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:464) ~[github-api-unbridged-1.318.jar:na]\n\t... 179 common frames omitted\n```\n\nMost likely, `GHBranch#isProtected()` will be true for both protection methods, so we need a way to tell them apart without conflating two different methods and later calling wrong endpoints.\nPerhaps a temp solution could be introduced until #1811 is implemented.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2062/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1811", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/events", + "html_url": "https://github.com/hub4j/github-api/issues/1811", + "id": 2177274983, + "node_id": "I_kwDOAAlq-s6BxpRn", + "number": 1811, + "title": "Implement API for retrieving and managing rulesets on a repository", + "user": { + "login": "FHannes", + "id": 915760, + "node_id": "MDQ6VXNlcjkxNTc2MA==", + "avatar_url": "https://avatars.githubusercontent.com/u/915760?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/FHannes", + "html_url": "https://github.com/FHannes", + "followers_url": "https://api.github.com/users/FHannes/followers", + "following_url": "https://api.github.com/users/FHannes/following{/other_user}", + "gists_url": "https://api.github.com/users/FHannes/gists{/gist_id}", + "starred_url": "https://api.github.com/users/FHannes/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/FHannes/subscriptions", + "organizations_url": "https://api.github.com/users/FHannes/orgs", + "repos_url": "https://api.github.com/users/FHannes/repos", + "events_url": "https://api.github.com/users/FHannes/events{/privacy}", + "received_events_url": "https://api.github.com/users/FHannes/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2024-03-09T15:42:36Z", + "updated_at": "2025-03-16T16:04:55Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "As far as I can tell, the library currently supports managing branch protection, but not [rulesets](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets). The use of rulesets has some advantages over using branch protection [as listed in the documentation](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets#about-rulesets-protected-branches-and-protected-tags), so it might be useful to add support for them.\r\nAPI reference: https://docs.github.com/en/rest/repos/rules?apiVersion=2022-11-28", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1811/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2028", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/events", + "html_url": "https://github.com/hub4j/github-api/issues/2028", + "id": 2843436852, + "node_id": "I_kwDOAAlq-s6pe2c0", + "number": 2028, + "title": "GHMilestone throws NPE on null state", + "user": { + "login": "rnveach", + "id": 5427943, + "node_id": "MDQ6VXNlcjU0Mjc5NDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rnveach", + "html_url": "https://github.com/rnveach", + "followers_url": "https://api.github.com/users/rnveach/followers", + "following_url": "https://api.github.com/users/rnveach/following{/other_user}", + "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", + "organizations_url": "https://api.github.com/users/rnveach/orgs", + "repos_url": "https://api.github.com/users/rnveach/repos", + "events_url": "https://api.github.com/users/rnveach/events{/privacy}", + "received_events_url": "https://api.github.com/users/rnveach/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2025-02-10T19:35:34Z", + "updated_at": "2025-02-27T18:05:14Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "The following method is not `null` safe:\nhttps://github.com/hub4j/github-api/blob/055638069ce8299629225be7f39395b16d4fe839/src/main/java/org/kohsuke/github/GHMilestone.java#L137-L138\n\nWhenever it is called to get the state of the milestone, and it (`state` field) is `null`, it will throw a `NullPointerException`.\n\nThere is no other method in this class to ascertain the value of this before calling the method. The field is private. Programmers are forced to wrap this in a try/catch in the case it is null.\n\nIt would ease handling this call if it had a `null` check and returned `null` if there is no state.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2028/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + } + ] +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/4-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/4-search_issues.json new file mode 100644 index 0000000000..e317840101 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/4-search_issues.json @@ -0,0 +1,2652 @@ +{ + "total_count": 164, + "incomplete_results": false, + "items": [ + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2037", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2037/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2037/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2037/events", + "html_url": "https://github.com/hub4j/github-api/issues/2037", + "id": 2858704844, + "node_id": "I_kwDOAAlq-s6qZF_M", + "number": 2037, + "title": "GHIssueStateReason should add reopened", + "user": { + "login": "rnveach", + "id": 5427943, + "node_id": "MDQ6VXNlcjU0Mjc5NDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rnveach", + "html_url": "https://github.com/rnveach", + "followers_url": "https://api.github.com/users/rnveach/followers", + "following_url": "https://api.github.com/users/rnveach/following{/other_user}", + "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", + "organizations_url": "https://api.github.com/users/rnveach/orgs", + "repos_url": "https://api.github.com/users/rnveach/repos", + "events_url": "https://api.github.com/users/rnveach/events{/privacy}", + "received_events_url": "https://api.github.com/users/rnveach/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-02-17T20:07:48Z", + "updated_at": "2025-02-24T17:32:27Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "https://github.com/hub4j/github-api/blob/e14ec3b3677760714cd096ad8157a3e6a6dded65/src/main/java/org/kohsuke/github/GHIssueStateReason.java\n\nhttps://docs.github.com/en/rest/issues/issues?apiVersion=2022-11-28#update-an-issue\n\n> state_reason string or null\n> Can be one of: completed, not_planned, reopened, null \n\n`reopened` is supported and should be added.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2037/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2037/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2035", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2035/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2035/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2035/events", + "html_url": "https://github.com/hub4j/github-api/issues/2035", + "id": 2858255655, + "node_id": "I_kwDOAAlq-s6qXYUn", + "number": 2035, + "title": "GHCommitPointer throws NPE on null repository", + "user": { + "login": "rnveach", + "id": 5427943, + "node_id": "MDQ6VXNlcjU0Mjc5NDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rnveach", + "html_url": "https://github.com/rnveach", + "followers_url": "https://api.github.com/users/rnveach/followers", + "following_url": "https://api.github.com/users/rnveach/following{/other_user}", + "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", + "organizations_url": "https://api.github.com/users/rnveach/orgs", + "repos_url": "https://api.github.com/users/rnveach/repos", + "events_url": "https://api.github.com/users/rnveach/events{/privacy}", + "received_events_url": "https://api.github.com/users/rnveach/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2025-02-17T16:04:48Z", + "updated_at": "2025-02-24T17:32:12Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\n\nI receive an NPE on `GHCommitPointer#getCommit` because `getRepository()` returns `null`.\n\nI assume `getRepository()` should always be populated as I need a `GHRepository` to even get the initial PR/issue in the first place.\n\n**To Reproduce**\n\nWhile scanning https://github.com/checkstyle/checkstyle/pulls , I pick up PR 1.\nI call `GHPullRequest#getHead()` and get the `GHCommitPointer`.\nI call `GHCommitPointer#getCommit()` and receive an NPE.\n`getRepository()` returns `null`.\n\n**Expected behavior**\n\nNo NPE.\n\n**Additional context**\n\n`GHPullRequest#getBase()` doesn't seem to have this issue.\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2035/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2035/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2032", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/events", + "html_url": "https://github.com/hub4j/github-api/issues/2032", + "id": 2854448657, + "node_id": "I_kwDOAAlq-s6qI24R", + "number": 2032, + "title": "Add more methods to QueryBuilder", + "user": { + "login": "rnveach", + "id": 5427943, + "node_id": "MDQ6VXNlcjU0Mjc5NDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rnveach", + "html_url": "https://github.com/rnveach", + "followers_url": "https://api.github.com/users/rnveach/followers", + "following_url": "https://api.github.com/users/rnveach/following{/other_user}", + "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", + "organizations_url": "https://api.github.com/users/rnveach/orgs", + "repos_url": "https://api.github.com/users/rnveach/repos", + "events_url": "https://api.github.com/users/rnveach/events{/privacy}", + "received_events_url": "https://api.github.com/users/rnveach/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2025-02-14T18:22:40Z", + "updated_at": "2025-02-18T05:58:24Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "1)\n`GHPullRequestQueryBuilder` doesn't seem to support `pageSize(int)` but `GHIssueQueryBuilder` does.\n\nI don't know if there is a technical reason, but it would help to support repos with a large number of PRs. I didn't realize this was a possibility at first and took a long time to start iterating through issues.\n\n2)\n`GHIssueQueryBuilder` seems to still pull in PRs. Is it possible to add another method to the query to drop PRs from Issue queries and the same for Issues from PR queries. It would help the amount of data to transfer from the server if the server supported it.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2032/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1997", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1997/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1997/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1997/events", + "html_url": "https://github.com/hub4j/github-api/issues/1997", + "id": 2745371503, + "node_id": "I_kwDOAAlq-s6jowtv", + "number": 1997, + "title": "enhancement: add app support for GHBranchProtectionBuilder Restrictions", + "user": { + "login": "akt-penklera", + "id": 182738397, + "node_id": "U_kgDOCuRd3Q", + "avatar_url": "https://avatars.githubusercontent.com/u/182738397?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/akt-penklera", + "html_url": "https://github.com/akt-penklera", + "followers_url": "https://api.github.com/users/akt-penklera/followers", + "following_url": "https://api.github.com/users/akt-penklera/following{/other_user}", + "gists_url": "https://api.github.com/users/akt-penklera/gists{/gist_id}", + "starred_url": "https://api.github.com/users/akt-penklera/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/akt-penklera/subscriptions", + "organizations_url": "https://api.github.com/users/akt-penklera/orgs", + "repos_url": "https://api.github.com/users/akt-penklera/repos", + "events_url": "https://api.github.com/users/akt-penklera/events{/privacy}", + "received_events_url": "https://api.github.com/users/akt-penklera/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2024-12-17T16:12:55Z", + "updated_at": "2025-02-13T22:53:44Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi,\r\nAs it stands the api offers, restrictions for users, teams, but app slugs cannot be added to the definition.\r\nWould it be possible to add this?\r\nI checked and currently other endpoints for gihub apps do exist.\r\n\r\nSorry if this is out of place, and thank you for an awsome project.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1997/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1997/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2007", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2007/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2007/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2007/events", + "html_url": "https://github.com/hub4j/github-api/issues/2007", + "id": 2788128469, + "node_id": "I_kwDOAAlq-s6mL3bV", + "number": 2007, + "title": "GHRespository.getTemplateRepository() should call populate() if null", + "user": { + "login": "kkroner8451", + "id": 14809736, + "node_id": "MDQ6VXNlcjE0ODA5NzM2", + "avatar_url": "https://avatars.githubusercontent.com/u/14809736?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kkroner8451", + "html_url": "https://github.com/kkroner8451", + "followers_url": "https://api.github.com/users/kkroner8451/followers", + "following_url": "https://api.github.com/users/kkroner8451/following{/other_user}", + "gists_url": "https://api.github.com/users/kkroner8451/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kkroner8451/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kkroner8451/subscriptions", + "organizations_url": "https://api.github.com/users/kkroner8451/orgs", + "repos_url": "https://api.github.com/users/kkroner8451/repos", + "events_url": "https://api.github.com/users/kkroner8451/events{/privacy}", + "received_events_url": "https://api.github.com/users/kkroner8451/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-01-14T19:32:50Z", + "updated_at": "2025-02-13T22:53:01Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nA clear and concise description of what the bug is.\r\n\r\nWhen calling the GitHub API to get a [list of repositories](https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#list-organization-repositories) the `template_repository` field is not included in the response. Thus if using this library to get a list of repositories (i.e. `GHOrganization.listRepositories()`) that field will always be null when mapped onto the GHRepository object constructed as introduced in [PR#1817](https://github.com/hub4j/github-api/pull/1817/). Under a different proposal I saw [PR#1579](https://github.com/hub4j/github-api/pull/1579) it had a check \r\n\r\n```java\r\n if this.template_repository == null \r\n populate()\r\n```\r\nThis has its own performance concerns as there is no flag that `populate()` isn't called more than once which would happen if this was not a child of a template repository and the `getTemplateRepository()` method was called multiple times. All works as expected when getting a single repository via `GitHub.getRepository()` as the[ GitHub API](https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#get-a-repository) includes the template_repository field in that case.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Go to '...'\r\n2. Click on '....'\r\n3. Scroll down to '....'\r\n4. See error\r\n\r\n```java\r\nGHRepositories[] repos = gitHub.getOrganization(\"SAMPLE\").listRepositories(10);\r\nfor (GHRepository repo : repos){\r\n if (repo.getTemplateRepository() != null) {\r\n // BUG: This will never hit as underlying template_repository field isn't ever populated when using list vs single get methods\r\n doSomethingWithTemplate();\r\n }\r\n}\r\n```\r\n\r\n**Expected behavior**\r\nA clear and concise description of what you expected to happen.\r\n\r\nI expect the GHRepository.getTemplateRepository() to return the value assuming the repo is a child of a template regardless of if it was originally constructed by a method to get the single repo (working) versus getting a list of repositories (not working) and believe making the delayed load `populate()` call as seen in other places is an established behavior that would be expected.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: [e.g. iOS]\r\n - Browser [e.g. chrome, safari]\r\n - Version [e.g. 22]\r\n\r\n**Additional context**\r\nAdd any other context about the problem here.\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2007/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2007/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2013", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2013/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2013/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2013/events", + "html_url": "https://github.com/hub4j/github-api/issues/2013", + "id": 2797786767, + "node_id": "I_kwDOAAlq-s6mwtaP", + "number": 2013, + "title": "`GHPullRequestReviewComment` should extend `GHIssueComment`", + "user": { + "login": "Haarolean", + "id": 1494347, + "node_id": "MDQ6VXNlcjE0OTQzNDc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Haarolean", + "html_url": "https://github.com/Haarolean", + "followers_url": "https://api.github.com/users/Haarolean/followers", + "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", + "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", + "organizations_url": "https://api.github.com/users/Haarolean/orgs", + "repos_url": "https://api.github.com/users/Haarolean/repos", + "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", + "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-01-19T19:18:39Z", + "updated_at": "2025-01-21T06:39:37Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "It seems that `GHPullRequestReviewComment` should extend `GHIssueComment`, the same way `GHPullRequest` extends `GHIssue`. ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2013/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2013/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2004", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2004/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2004/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2004/events", + "html_url": "https://github.com/hub4j/github-api/issues/2004", + "id": 2766043832, + "node_id": "I_kwDOAAlq-s6k3nq4", + "number": 2004, + "title": "Issues to get all the retryAttemps of an workflow", + "user": { + "login": "ananta-code", + "id": 30434147, + "node_id": "MDQ6VXNlcjMwNDM0MTQ3", + "avatar_url": "https://avatars.githubusercontent.com/u/30434147?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ananta-code", + "html_url": "https://github.com/ananta-code", + "followers_url": "https://api.github.com/users/ananta-code/followers", + "following_url": "https://api.github.com/users/ananta-code/following{/other_user}", + "gists_url": "https://api.github.com/users/ananta-code/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ananta-code/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ananta-code/subscriptions", + "organizations_url": "https://api.github.com/users/ananta-code/orgs", + "repos_url": "https://api.github.com/users/ananta-code/repos", + "events_url": "https://api.github.com/users/ananta-code/events{/privacy}", + "received_events_url": "https://api.github.com/users/ananta-code/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1686292366, + "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", + "name": "more information needed", + "color": "9ce1ed", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2025-01-02T13:33:43Z", + "updated_at": "2025-01-06T14:22:07Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nI have a runner and which was retried 5 times and each runner has almost 25 jobs so when i use \r\n repository.getWorkflowRun(runnerId/workflow_id), it is returning the ghWorkFlowRunner but newWorkFlowRun.listJobs().toList() doesn't have all the retried job info\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Create a PR\r\n2. Cancel the first runner\r\n3. Retry the runner again and again\r\n4. newWorkFlowRun.listJobs().toList() should contain all the jobs irrespective of the retry attemps\r\n\r\n**Expected behavior**\r\nnewWorkFlowRun.listJobs().toList() is only returning most recent retried jobs\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: iOS\r\n - Version 1.326\r\n\r\n**Additional context**\r\nIs there any way to get the runner specific to a runner id and retryAttempt.\r\nI have monorepo so repository.queryWorkflowRuns().list() and then filter by runnerId and retry attempt is not feasible for me since we have more than 3000 runners getting executed everyday.\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2004/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2004/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1973", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1973/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1973/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1973/events", + "html_url": "https://github.com/hub4j/github-api/issues/1973", + "id": 2586640889, + "node_id": "I_kwDOAAlq-s6aLQH5", + "number": 1973, + "title": "Extract `parseWaitTime` method to shared utility", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2024-10-14T17:28:56Z", + "updated_at": "2025-01-02T22:47:12Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "`GitHubAbuseLimitHander` and `GitHubRateLimitHandler` both implement `parseWaitTime`. Most of the code is the same and could also be useful to consumers of this library. \r\n\r\nExtract `parseWaitTime` to a utility class and consider exposing as `public`. ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1973/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1973/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1964", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1964/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1964/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1964/events", + "html_url": "https://github.com/hub4j/github-api/issues/1964", + "id": 2563506909, + "node_id": "I_kwDOAAlq-s6YzALd", + "number": 1964, + "title": "allowSquashMerge : \"Default commit message\" parameters are missing", + "user": { + "login": "sbouchexbellomie-Philips", + "id": 182072604, + "node_id": "U_kgDOCto1HA", + "avatar_url": "https://avatars.githubusercontent.com/u/182072604?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sbouchexbellomie-Philips", + "html_url": "https://github.com/sbouchexbellomie-Philips", + "followers_url": "https://api.github.com/users/sbouchexbellomie-Philips/followers", + "following_url": "https://api.github.com/users/sbouchexbellomie-Philips/following{/other_user}", + "gists_url": "https://api.github.com/users/sbouchexbellomie-Philips/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sbouchexbellomie-Philips/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sbouchexbellomie-Philips/subscriptions", + "organizations_url": "https://api.github.com/users/sbouchexbellomie-Philips/orgs", + "repos_url": "https://api.github.com/users/sbouchexbellomie-Philips/repos", + "events_url": "https://api.github.com/users/sbouchexbellomie-Philips/events{/privacy}", + "received_events_url": "https://api.github.com/users/sbouchexbellomie-Philips/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2024-10-03T09:04:14Z", + "updated_at": "2025-01-02T22:46:06Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "allowSquashMerge is only accepting an \"enabled\" parameter whereas the GitHub API is gving the ability to set the \"Default commit message\" (default message, PR title, PR title + commit details, PR title + description)\r\n\r\nAny plan to add it ? Need a PR ?", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1964/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1964/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1899", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1899/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1899/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1899/events", + "html_url": "https://github.com/hub4j/github-api/issues/1899", + "id": 2435118334, + "node_id": "I_kwDOAAlq-s6RJPT-", + "number": 1899, + "title": "Missing endpoint for adding a repo to an app installation", + "user": { + "login": "deliaconstantinescu", + "id": 175299067, + "node_id": "U_kgDOCnLZ-w", + "avatar_url": "https://avatars.githubusercontent.com/u/175299067?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/deliaconstantinescu", + "html_url": "https://github.com/deliaconstantinescu", + "followers_url": "https://api.github.com/users/deliaconstantinescu/followers", + "following_url": "https://api.github.com/users/deliaconstantinescu/following{/other_user}", + "gists_url": "https://api.github.com/users/deliaconstantinescu/gists{/gist_id}", + "starred_url": "https://api.github.com/users/deliaconstantinescu/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/deliaconstantinescu/subscriptions", + "organizations_url": "https://api.github.com/users/deliaconstantinescu/orgs", + "repos_url": "https://api.github.com/users/deliaconstantinescu/repos", + "events_url": "https://api.github.com/users/deliaconstantinescu/events{/privacy}", + "received_events_url": "https://api.github.com/users/deliaconstantinescu/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2024-07-29T11:05:41Z", + "updated_at": "2024-12-11T22:13:29Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I can't seem to find the implementation of [this endpoint](https://docs.github.com/en/rest/apps/installations?apiVersion=2022-11-28#add-a-repository-to-an-app-installation).\r\n\r\nWhat I want to do is be able to create a repository and add it to an already existing app in my github organization. I want to achieve this by only using the app installation ID and personal access token.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1899/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1899/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1847", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1847/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1847/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1847/events", + "html_url": "https://github.com/hub4j/github-api/issues/1847", + "id": 2318655614, + "node_id": "I_kwDOAAlq-s6KM-B-", + "number": 1847, + "title": "Custom properties missing in GHRepository", + "user": { + "login": "nardew", + "id": 28791551, + "node_id": "MDQ6VXNlcjI4NzkxNTUx", + "avatar_url": "https://avatars.githubusercontent.com/u/28791551?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nardew", + "html_url": "https://github.com/nardew", + "followers_url": "https://api.github.com/users/nardew/followers", + "following_url": "https://api.github.com/users/nardew/following{/other_user}", + "gists_url": "https://api.github.com/users/nardew/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nardew/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nardew/subscriptions", + "organizations_url": "https://api.github.com/users/nardew/orgs", + "repos_url": "https://api.github.com/users/nardew/repos", + "events_url": "https://api.github.com/users/nardew/events{/privacy}", + "received_events_url": "https://api.github.com/users/nardew/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 7, + "created_at": "2024-05-27T09:10:49Z", + "updated_at": "2024-12-09T03:48:22Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\n`GHRepository` class (interface to `repos/org/repo_name` GitHub endpoint) is missing custom properties. They are mentioned in the GitHub documentation at the root level as\r\n\r\n```\r\n\"custom_properties\": {\r\n \"type\": \"object\",\r\n \"description\": \"The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.\",\r\n \"additionalProperties\": true\r\n }\r\n```", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1847/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1847/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1983", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1983/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1983/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1983/events", + "html_url": "https://github.com/hub4j/github-api/issues/1983", + "id": 2631489077, + "node_id": "I_kwDOAAlq-s6c2VY1", + "number": 1983, + "title": "`getReleaseByTagName` does not find draft releases", + "user": { + "login": "MattSturgeon", + "id": 5046562, + "node_id": "MDQ6VXNlcjUwNDY1NjI=", + "avatar_url": "https://avatars.githubusercontent.com/u/5046562?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/MattSturgeon", + "html_url": "https://github.com/MattSturgeon", + "followers_url": "https://api.github.com/users/MattSturgeon/followers", + "following_url": "https://api.github.com/users/MattSturgeon/following{/other_user}", + "gists_url": "https://api.github.com/users/MattSturgeon/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MattSturgeon/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MattSturgeon/subscriptions", + "organizations_url": "https://api.github.com/users/MattSturgeon/orgs", + "repos_url": "https://api.github.com/users/MattSturgeon/repos", + "events_url": "https://api.github.com/users/MattSturgeon/events{/privacy}", + "received_events_url": "https://api.github.com/users/MattSturgeon/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2024-11-03T21:33:06Z", + "updated_at": "2024-11-04T07:20:47Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\n`getReleaseByTagName` is only able to find published releases, not draft releases.\r\n\r\nThis is caused by draft releases not being accessible via the `GET /repos/:owner/:repo/releases/tags/:tag` endpoint.\r\n\r\nDraft releases do have the `tag_name` attribute set correctly, however they are only accessible via:\r\n- `GET /repos/:owner/:repo/releases`\r\n- `GET /repos/:owner/:repo/releases/:id`\r\n- GraphQL\r\n\r\nWithout this, the only way I am able to find draft releases is by iterating over `listReleases()`.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Create a draft release on a GitHub repo\r\n2. Attempt to use `getReleaseByTagName` to retrieve the release information\r\n3. See that `null` is returned instead\r\n\r\n**Expected behavior**\r\nI expect either `getReleaseByTagName` to lookup draft releases, or an alternative method be added to do so.\r\n\r\nIf a new method is added, I'm not sure the best name for it.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: NixOS 24.11\r\n - Browser Firefox 131\r\n - Version github-api 1.318\r\n\r\n**Additional context**\r\n`getReleaseByTagName` was added in https://github.com/hub4j/github-api/pull/411\r\n\r\nThe `gh` CLI implements its [`FetchReleases`](https://github.com/cli/cli/blob/30066b0042d0c5928d959e288144300cb28196c9/pkg/cmd/release/shared/fetch.go#L134-L161) function as first using the `GET /repos/:owner/:repo/releases/tags/:tag` endpoint, and then falling back to a [`fetchDraftRelease`](https://github.com/cli/cli/blob/30066b0042d0c5928d959e288144300cb28196c9/pkg/cmd/release/shared/fetch.go#L169-L200) function which finds the release via a GraphQL qurey and then gets all the data via a `GET /repos/:owner/:repo/releases/:id` request.\r\n\r\nIn the `gh` CLI implementation, fetching a draft release requires three requests:\r\n1. Lookup `GET /repos/:owner/:repo/releases/tags/:tag` (404)\r\n2. Lookup GraphQL query\r\n3. Lookup `GET /repos/:owner/:repo/releases/:id`\r\n\r\nThe first request is not strictly necessary, since the GraphQL query will also find non-draft releases.\r\n\r\nI was able to use the following query to get the tag's id for draft tags:\r\n```graphql\r\nquery($owner:String!, $repo:String!, $tagName:String!){\r\n repository(owner: $owner, name: $repo) {\r\n release(tagName: $tagName) {\r\n databaseId,\r\n isDraft\r\n }\r\n }\r\n}\r\n```", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1983/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1983/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1974", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1974/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1974/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1974/events", + "html_url": "https://github.com/hub4j/github-api/issues/1974", + "id": 2597968075, + "node_id": "I_kwDOAAlq-s6a2djL", + "number": 1974, + "title": "Calling getRef().delete() does not respect the base URL set in .withEndpoint()", + "user": { + "login": "ajmalab", + "id": 90693406, + "node_id": "MDQ6VXNlcjkwNjkzNDA2", + "avatar_url": "https://avatars.githubusercontent.com/u/90693406?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ajmalab", + "html_url": "https://github.com/ajmalab", + "followers_url": "https://api.github.com/users/ajmalab/followers", + "following_url": "https://api.github.com/users/ajmalab/following{/other_user}", + "gists_url": "https://api.github.com/users/ajmalab/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ajmalab/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ajmalab/subscriptions", + "organizations_url": "https://api.github.com/users/ajmalab/orgs", + "repos_url": "https://api.github.com/users/ajmalab/repos", + "events_url": "https://api.github.com/users/ajmalab/events{/privacy}", + "received_events_url": "https://api.github.com/users/ajmalab/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1686292366, + "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", + "name": "more information needed", + "color": "9ce1ed", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2024-10-18T16:43:11Z", + "updated_at": "2024-10-26T08:23:20Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nCalling `getRef().delete()` does not respect the base URL set in .withEndpoint() when creating the OAuth client. It uses `api.github.com` by default. While this would work in production, it blocks the ability to test this endpoint using local mock servers.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Create an OAuth client as follows\r\n```\r\nvar githubClient = new GitHubBuilder().withOAuthToken(\"my-token\").withEndpoint(\"http://localhost:8080\").build();\r\n```\r\n3. Call the method to delete a ref:\r\n```\r\ngithubClient.getRepo(\"owner/repo\").getRef(\"heads/my-branch\").delete()\r\n```\r\n4. If you inspect the request in a debugger, you will see that the constructed URL has the host `https://api.github.com` and not `http://localhost:8080`.\r\n\r\n\r\n**Expected behavior**\r\nThe `getRef().delete()` method should respect the base URL passed in via `withEndpoint()` like the other chained methods of `getRepository()`.\r\n\r\n\r\n**Additional context**\r\nLibrary version: 1.321\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1974/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1974/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/601", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/601/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/601/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/601/events", + "html_url": "https://github.com/hub4j/github-api/issues/601", + "id": 520420353, + "node_id": "MDU6SXNzdWU1MjA0MjAzNTM=", + "number": 601, + "title": "Document this library's approach to GitHub API rate limit", + "user": { + "login": "PauloMigAlmeida", + "id": 1011868, + "node_id": "MDQ6VXNlcjEwMTE4Njg=", + "avatar_url": "https://avatars.githubusercontent.com/u/1011868?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/PauloMigAlmeida", + "html_url": "https://github.com/PauloMigAlmeida", + "followers_url": "https://api.github.com/users/PauloMigAlmeida/followers", + "following_url": "https://api.github.com/users/PauloMigAlmeida/following{/other_user}", + "gists_url": "https://api.github.com/users/PauloMigAlmeida/gists{/gist_id}", + "starred_url": "https://api.github.com/users/PauloMigAlmeida/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/PauloMigAlmeida/subscriptions", + "organizations_url": "https://api.github.com/users/PauloMigAlmeida/orgs", + "repos_url": "https://api.github.com/users/PauloMigAlmeida/repos", + "events_url": "https://api.github.com/users/PauloMigAlmeida/events{/privacy}", + "received_events_url": "https://api.github.com/users/PauloMigAlmeida/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 2070644911, + "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", + "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", + "name": "documentation", + "color": "6ee5cb", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2019-11-09T13:00:41Z", + "updated_at": "2024-10-22T08:19:14Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Even for people that know certain bits and pieces of this library's source code, it still not trivial to understand how this library deals with GitHub's API rate limit.\r\n\r\nI'm planning to write something about it as soon as the #595 is merged (as it may introduce the custom api rates)\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/601/reactions", + "total_count": 2, + "+1": 2, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/601/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1658", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1658/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1658/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1658/events", + "html_url": "https://github.com/hub4j/github-api/issues/1658", + "id": 1708875207, + "node_id": "I_kwDOAAlq-s5l213H", + "number": 1658, + "title": "Convert methods with checked exceptions to unchecked (support streaming and functional programming)", + "user": { + "login": "Haarolean", + "id": 1494347, + "node_id": "MDQ6VXNlcjE0OTQzNDc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Haarolean", + "html_url": "https://github.com/Haarolean", + "followers_url": "https://api.github.com/users/Haarolean/followers", + "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", + "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", + "organizations_url": "https://api.github.com/users/Haarolean/orgs", + "repos_url": "https://api.github.com/users/Haarolean/repos", + "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", + "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1780165359, + "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", + "name": "breaking change", + "color": "b60205", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 20, + "created_at": "2023-05-14T09:18:13Z", + "updated_at": "2024-10-01T08:57:45Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi,\r\n`GHObject#getCreatedAt` and `GHObject#getUpdatedAt` throw unnecessary `IOException` which is not being thrown by an underlying code. Is there a reason for this?", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1658/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1658/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1916", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1916/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1916/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1916/events", + "html_url": "https://github.com/hub4j/github-api/issues/1916", + "id": 2492554383, + "node_id": "I_kwDOAAlq-s6UkVyP", + "number": 1916, + "title": "Support /repos/{owner}/{repo}/automated-security-fixes", + "user": { + "login": "ranma2913", + "id": 4295880, + "node_id": "MDQ6VXNlcjQyOTU4ODA=", + "avatar_url": "https://avatars.githubusercontent.com/u/4295880?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ranma2913", + "html_url": "https://github.com/ranma2913", + "followers_url": "https://api.github.com/users/ranma2913/followers", + "following_url": "https://api.github.com/users/ranma2913/following{/other_user}", + "gists_url": "https://api.github.com/users/ranma2913/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ranma2913/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ranma2913/subscriptions", + "organizations_url": "https://api.github.com/users/ranma2913/orgs", + "repos_url": "https://api.github.com/users/ranma2913/repos", + "events_url": "https://api.github.com/users/ranma2913/events{/privacy}", + "received_events_url": "https://api.github.com/users/ranma2913/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2024-08-28T16:36:56Z", + "updated_at": "2024-09-10T07:07:05Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Support Endpoints:\r\n\r\n- https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#check-if-automated-security-fixes-are-enabled-for-a-repository\r\n- https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#enable-automated-security-fixes\r\n- https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#disable-automated-security-fixes", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1916/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1916/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/901", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/901/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/901/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/901/events", + "html_url": "https://github.com/hub4j/github-api/issues/901", + "id": 666061684, + "node_id": "MDU6SXNzdWU2NjYwNjE2ODQ=", + "number": 901, + "title": "Commit bigger file failed", + "user": { + "login": "laboratorys", + "id": 53255535, + "node_id": "MDQ6VXNlcjUzMjU1NTM1", + "avatar_url": "https://avatars.githubusercontent.com/u/53255535?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/laboratorys", + "html_url": "https://github.com/laboratorys", + "followers_url": "https://api.github.com/users/laboratorys/followers", + "following_url": "https://api.github.com/users/laboratorys/following{/other_user}", + "gists_url": "https://api.github.com/users/laboratorys/gists{/gist_id}", + "starred_url": "https://api.github.com/users/laboratorys/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/laboratorys/subscriptions", + "organizations_url": "https://api.github.com/users/laboratorys/orgs", + "repos_url": "https://api.github.com/users/laboratorys/repos", + "events_url": "https://api.github.com/users/laboratorys/events{/privacy}", + "received_events_url": "https://api.github.com/users/laboratorys/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + }, + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2020-07-27T07:34:42Z", + "updated_at": "2024-09-06T04:03:42Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Error when I upload a 60M file.\r\nThis is my code.\r\n```\r\nGHRepository repo = github.getRepository(user+\"/\"+GithubUploader.repo);\r\n\t\t\tGHRef masterRef = repo.getRef(\"heads/master\");\r\n\t String masterTreeSha = repo.getTreeRecursive(\"master\", 1).getSha();\r\n\t GHTreeBuilder treeBuilder = repo.createTree().baseTree(masterTreeSha);\r\n\t\t\ttreeBuilder.add(uploadPath+\"/\"+file.getName(), FileUtil.readBytes(file), true);\r\n\t\t\tString treeSha = treeBuilder.create().getSha();\r\n\t String commitSha = repo.createCommit()\r\n\t \t .message(username + \" updates\")\r\n\t .tree(treeSha)\r\n\t .parent(masterRef.getObject().getSha())\r\n\t .create()\r\n\t .getSHA1();\r\n\t masterRef.updateTo(commitSha);\r\n```\r\nAnd the error:\r\n```\r\njava.lang.OutOfMemoryError: Java heap space\r\n\tat java.util.Base64$Encoder.encode(Base64.java:262) ~[na:1.8.0_262]\r\n\tat java.util.Base64$Encoder.encodeToString(Base64.java:315) ~[na:1.8.0_262]\r\n\tat org.kohsuke.github.GHBlobBuilder.binaryContent(GHBlobBuilder.java:39) ~[github-api-1.115.jar!/:na]\r\n\tat org.kohsuke.github.GHTreeBuilder.add(GHTreeBuilder.java:136) ~[github-api-1.115.jar!/:na]\r\n```\r\nRefer to this link\r\nhttps://github.com/hub4j/github-api/issues/878#issuecomment-655047530", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/901/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/901/timeline", + "performed_via_github_app": null, + "state_reason": "reopened", + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/513", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/513/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/513/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/513/events", + "html_url": "https://github.com/hub4j/github-api/issues/513", + "id": 432772736, + "node_id": "MDU6SXNzdWU0MzI3NzI3MzY=", + "number": 513, + "title": "Make low-level Requester and GitHubClient APIs public", + "user": { + "login": "Vampire", + "id": 325196, + "node_id": "MDQ6VXNlcjMyNTE5Ng==", + "avatar_url": "https://avatars.githubusercontent.com/u/325196?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Vampire", + "html_url": "https://github.com/Vampire", + "followers_url": "https://api.github.com/users/Vampire/followers", + "following_url": "https://api.github.com/users/Vampire/following{/other_user}", + "gists_url": "https://api.github.com/users/Vampire/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Vampire/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Vampire/subscriptions", + "organizations_url": "https://api.github.com/users/Vampire/orgs", + "repos_url": "https://api.github.com/users/Vampire/repos", + "events_url": "https://api.github.com/users/Vampire/events{/privacy}", + "received_events_url": "https://api.github.com/users/Vampire/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2019-04-12T22:51:43Z", + "updated_at": "2024-08-28T16:50:23Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "For being able to use missing API functionality it would be nice if the `Requester` would be accessible, so that the low-level requests can be done manually or e. g. with Kotlin extension functions, but still having the lib do rate limiting and so on.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/513/reactions", + "total_count": 8, + "+1": 8, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/513/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1712", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1712/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1712/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1712/events", + "html_url": "https://github.com/hub4j/github-api/issues/1712", + "id": 1903371311, + "node_id": "I_kwDOAAlq-s5xcyQv", + "number": 1712, + "title": "Missing support for deployment environments", + "user": { + "login": "charlie-collard", + "id": 11244353, + "node_id": "MDQ6VXNlcjExMjQ0MzUz", + "avatar_url": "https://avatars.githubusercontent.com/u/11244353?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charlie-collard", + "html_url": "https://github.com/charlie-collard", + "followers_url": "https://api.github.com/users/charlie-collard/followers", + "following_url": "https://api.github.com/users/charlie-collard/following{/other_user}", + "gists_url": "https://api.github.com/users/charlie-collard/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charlie-collard/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charlie-collard/subscriptions", + "organizations_url": "https://api.github.com/users/charlie-collard/orgs", + "repos_url": "https://api.github.com/users/charlie-collard/repos", + "events_url": "https://api.github.com/users/charlie-collard/events{/privacy}", + "received_events_url": "https://api.github.com/users/charlie-collard/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2023-09-19T16:45:20Z", + "updated_at": "2024-07-10T07:52:06Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Deployment environments are missing from the library. For example, I can't get, list, create, update, or delete deployment environments.\r\n\r\n[GitHub REST API documentation for deployment environments](https://docs.github.com/en/rest/deployments/environments?apiVersion=2022-11-28)\r\n\r\nNote: Deployment environments may be indirectly created via creating a deployment and specifying a string in the environment field:\r\n\r\n```java\r\nimport org.kohsuke.github.GitHub\r\n\r\nprivate void createDeployment() {\r\n GitHub.connectUsingOAuth(\"githubToken\")\r\n .getRepository(\"user/repo\")\r\n .createDeployment(\"1.0\")\r\n .environment(\"production\")\r\n .create()\r\n}\r\n```", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1712/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1712/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1891", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1891/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1891/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1891/events", + "html_url": "https://github.com/hub4j/github-api/issues/1891", + "id": 2384471476, + "node_id": "I_kwDOAAlq-s6OICW0", + "number": 1891, + "title": "Improve EnumTest to enforce `UNKNOWN` value for all API enums", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2024-07-01T18:24:14Z", + "updated_at": "2024-07-01T18:24:20Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "#1885 showed that we haven't been checking the count of all enum values. At the same time I noticed that we do not have `UNKNOWN` values for all API `enum`. \r\n\r\nAdding new values is not considered a breaking change by GitHub. This has caused `hub4j/github-api` calls to start failing unexpectedly in the the past - the new value is not recognized and we throw an exception during deserialization. No good. \r\n\r\nWe need to add `UNKNOWN` to all `enum` types that are returned from GitHub and enforce it. The test will include an exclude list to allow `enum` types only used during sending but not retrieving data. \r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1891/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1891/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1846", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1846/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1846/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1846/events", + "html_url": "https://github.com/hub4j/github-api/issues/1846", + "id": 2315222969, + "node_id": "I_kwDOAAlq-s6J_3-5", + "number": 1846, + "title": "how to use issuePayload.getIssue().deleteReaction?", + "user": { + "login": "maxandersen", + "id": 54129, + "node_id": "MDQ6VXNlcjU0MTI5", + "avatar_url": "https://avatars.githubusercontent.com/u/54129?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/maxandersen", + "html_url": "https://github.com/maxandersen", + "followers_url": "https://api.github.com/users/maxandersen/followers", + "following_url": "https://api.github.com/users/maxandersen/following{/other_user}", + "gists_url": "https://api.github.com/users/maxandersen/gists{/gist_id}", + "starred_url": "https://api.github.com/users/maxandersen/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/maxandersen/subscriptions", + "organizations_url": "https://api.github.com/users/maxandersen/orgs", + "repos_url": "https://api.github.com/users/maxandersen/repos", + "events_url": "https://api.github.com/users/maxandersen/events{/privacy}", + "received_events_url": "https://api.github.com/users/maxandersen/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1686290078, + "node_id": "MDU6TGFiZWwxNjg2MjkwMDc4", + "url": "https://api.github.com/repos/hub4j/github-api/labels/external", + "name": "external", + "color": "a0a0a0", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2024-05-24T11:57:24Z", + "updated_at": "2024-06-20T02:45:44Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "how is `issuePayload.getIssue().deleteReaction` intended to be used when its not possible to create a GHReaction with bot nor user + reaction as parameter?", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1846/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1846/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1583", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1583/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1583/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1583/events", + "html_url": "https://github.com/hub4j/github-api/issues/1583", + "id": 1508284810, + "node_id": "I_kwDOAAlq-s5Z5pmK", + "number": 1583, + "title": "Enhancement: Support configuring GHE pre-receive hooks", + "user": { + "login": "michaelpigg", + "id": 8850, + "node_id": "MDQ6VXNlcjg4NTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/8850?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/michaelpigg", + "html_url": "https://github.com/michaelpigg", + "followers_url": "https://api.github.com/users/michaelpigg/followers", + "following_url": "https://api.github.com/users/michaelpigg/following{/other_user}", + "gists_url": "https://api.github.com/users/michaelpigg/gists{/gist_id}", + "starred_url": "https://api.github.com/users/michaelpigg/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/michaelpigg/subscriptions", + "organizations_url": "https://api.github.com/users/michaelpigg/orgs", + "repos_url": "https://api.github.com/users/michaelpigg/repos", + "events_url": "https://api.github.com/users/michaelpigg/events{/privacy}", + "received_events_url": "https://api.github.com/users/michaelpigg/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2022-12-22T17:29:19Z", + "updated_at": "2024-06-06T03:16:17Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Self-hosted GitHub Enterprise supports configuring pre-receive hooks at the [organization](https://docs.github.com/en/enterprise-server@3.6/rest/enterprise-admin/org-pre-receive-hooks) and [repository](https://docs.github.com/en/enterprise-server@3.6/rest/enterprise-admin/repo-pre-receive-hooks). I would like github-api to support configuring these hooks.\r\n\r\nI needed to configure pre-receive hooks on several GHE repos, and extended github-api to support doing so. My enhancement mirrors the existing GHHook implementation because the two are similar in some ways, but the details are quite different.\r\n\r\nI would like to contribute that enhancement if it would be welcomed. I know the enhancement works and is valuable to me. However, I'm not sure if the project wants to go down the path of supporting a relatively niche feature that not all users would have access to. So I wanted to check before putting in the work to write tests and put together a good PR.\r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1583/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1583/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1843", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1843/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1843/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1843/events", + "html_url": "https://github.com/hub4j/github-api/issues/1843", + "id": 2277296676, + "node_id": "I_kwDOAAlq-s6HvMok", + "number": 1843, + "title": "GHHook id is long, but webhook operations require int", + "user": { + "login": "karlhendrikindrikson", + "id": 32715760, + "node_id": "MDQ6VXNlcjMyNzE1NzYw", + "avatar_url": "https://avatars.githubusercontent.com/u/32715760?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/karlhendrikindrikson", + "html_url": "https://github.com/karlhendrikindrikson", + "followers_url": "https://api.github.com/users/karlhendrikindrikson/followers", + "following_url": "https://api.github.com/users/karlhendrikindrikson/following{/other_user}", + "gists_url": "https://api.github.com/users/karlhendrikindrikson/gists{/gist_id}", + "starred_url": "https://api.github.com/users/karlhendrikindrikson/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/karlhendrikindrikson/subscriptions", + "organizations_url": "https://api.github.com/users/karlhendrikindrikson/orgs", + "repos_url": "https://api.github.com/users/karlhendrikindrikson/repos", + "events_url": "https://api.github.com/users/karlhendrikindrikson/events{/privacy}", + "received_events_url": "https://api.github.com/users/karlhendrikindrikson/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2024-05-03T09:36:29Z", + "updated_at": "2024-06-06T03:06:58Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi.\r\n\r\nWhen creating user and organization specific webhooks, the webhook id type is long, but find and delete operations accept an integer. This seems like a minor problem, since webhook ids start incrementing from 1, but isn't this a type safety problem in the long run?", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1843/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1843/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1498", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1498/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1498/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1498/events", + "html_url": "https://github.com/hub4j/github-api/issues/1498", + "id": 1327616944, + "node_id": "I_kwDOAAlq-s5PIdOw", + "number": 1498, + "title": "Add an option to generate release notes", + "user": { + "login": "aalmiray", + "id": 13969, + "node_id": "MDQ6VXNlcjEzOTY5", + "avatar_url": "https://avatars.githubusercontent.com/u/13969?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/aalmiray", + "html_url": "https://github.com/aalmiray", + "followers_url": "https://api.github.com/users/aalmiray/followers", + "following_url": "https://api.github.com/users/aalmiray/following{/other_user}", + "gists_url": "https://api.github.com/users/aalmiray/gists{/gist_id}", + "starred_url": "https://api.github.com/users/aalmiray/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/aalmiray/subscriptions", + "organizations_url": "https://api.github.com/users/aalmiray/orgs", + "repos_url": "https://api.github.com/users/aalmiray/repos", + "events_url": "https://api.github.com/users/aalmiray/events{/privacy}", + "received_events_url": "https://api.github.com/users/aalmiray/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2022-08-03T18:15:41Z", + "updated_at": "2024-05-30T06:18:51Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "GitHub offers an option to generate release notes based on issues and PRs -> https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes\r\n\r\nThe API call is described at https://docs.github.com/en/rest/releases/releases#generate-release-notes-content-for-a-release", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1498/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1498/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1771", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1771/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1771/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1771/events", + "html_url": "https://github.com/hub4j/github-api/issues/1771", + "id": 2044899947, + "node_id": "I_kwDOAAlq-s554rJr", + "number": 1771, + "title": "`GHEventPayload` should not contain `repository` as a root level property", + "user": { + "login": "Haarolean", + "id": 1494347, + "node_id": "MDQ6VXNlcjE0OTQzNDc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Haarolean", + "html_url": "https://github.com/Haarolean", + "followers_url": "https://api.github.com/users/Haarolean/followers", + "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", + "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", + "organizations_url": "https://api.github.com/users/Haarolean/orgs", + "repos_url": "https://api.github.com/users/Haarolean/repos", + "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", + "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1780165359, + "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", + "name": "breaking change", + "color": "b60205", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2023-12-16T18:43:30Z", + "updated_at": "2024-03-18T20:39:52Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Probly a candidate for a breaking change for v2:\r\n`GHEventPayload` probably should not contain `repository` as a root level property as it might not be present in every webhook payload. An example would be `installation` event, which is evident from `org/kohsuke/github/GHEventPayloadTest/installation.json` contents.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1771/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1771/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1458", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1458/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1458/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1458/events", + "html_url": "https://github.com/hub4j/github-api/issues/1458", + "id": 1241532782, + "node_id": "I_kwDOAAlq-s5KAElu", + "number": 1458, + "title": "Error getting notification", + "user": { + "login": "DeveloperSantosh", + "id": 100271188, + "node_id": "U_kgDOBfoEVA", + "avatar_url": "https://avatars.githubusercontent.com/u/100271188?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/DeveloperSantosh", + "html_url": "https://github.com/DeveloperSantosh", + "followers_url": "https://api.github.com/users/DeveloperSantosh/followers", + "following_url": "https://api.github.com/users/DeveloperSantosh/following{/other_user}", + "gists_url": "https://api.github.com/users/DeveloperSantosh/gists{/gist_id}", + "starred_url": "https://api.github.com/users/DeveloperSantosh/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/DeveloperSantosh/subscriptions", + "organizations_url": "https://api.github.com/users/DeveloperSantosh/orgs", + "repos_url": "https://api.github.com/users/DeveloperSantosh/repos", + "events_url": "https://api.github.com/users/DeveloperSantosh/events{/privacy}", + "received_events_url": "https://api.github.com/users/DeveloperSantosh/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2022-05-19T10:01:22Z", + "updated_at": "2024-03-15T23:38:19Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "While retrieving notifications it's throwing errors described below for the code listed below.\r\n```bash\r\norg.kohsuke.github.HttpException: {\"message\":\"Unable to parse If-Modified-Since request header. Please make sure value is in an acceptable format.\",\"documentation_url\":\"https://docs.github.com/rest/reference/activity#list-notifications-for-the-authenticated-user\"}\r\n\tat org.kohsuke.github.GitHubConnectorResponseErrorHandler$1.onError(GitHubConnectorResponseErrorHandler.java:56) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.GitHubClient.detectKnownErrors(GitHubClient.java:424) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:386) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.GitHubPageIterator.fetch(GitHubPageIterator.java:142) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.GitHubPageIterator.hasNext(GitHubPageIterator.java:89) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.PagedIterator.fetch(PagedIterator.java:106) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.PagedIterator.nextPageArray(PagedIterator.java:134) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.PagedIterable.toArray(PagedIterable.java:78) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.GitHubPageContentsIterable.toResponse(GitHubPageContentsIterable.java:58) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.GHNotificationStream$1.fetch(GHNotificationStream.java:183) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.GHNotificationStream$1.hasNext(GHNotificationStream.java:149) ~[github-api-1.306.jar:na]\r\n```\r\n**The line of code where I am getting error is\r\n```code\r\nGHNotificationStream notificationStream = gitHub.listNotifications();\r\nfor (GHThread ghThread : notificationStream){\r\n Map notification = new HashMap<>();\r\n notification.put(\"type\", ghThread.getType());\r\n notification.put(\"title\", ghThread.getTitle());\r\n notification.put(\"reason\", ghThread.getReason());\r\n notification.put(\"createdAt\", String.valueOf(ghThread.getCreatedAt()));\r\n notification.put(\"updatedAt\", String.valueOf(ghThread.getUpdatedAt()));\r\n notification.put(\"repository\", ghThread.getRepository().getName());\r\n notificationList.add(notification);\r\n }\r\n```\r\nI am not sure about the real cause of it but it's maybe caused due to the 'null' value passing in lastModified variable in org.kohsuke.github.GHNotificationStream class line number: 107 of below snippet,\r\n\r\n```\r\nif (this.nextCheckTime < now) {\r\n req.setHeader(\"If-Modified-Since\", `this.lastModified);\r\n Requester requester = (Requester)req.withUrlPath(GHNotificationStream.this.apiUrl, new String[0]);\r\n GitHubResponse response = ((GitHubPageContentsIterable)requester.toIterable(GHThread[].class, (Consumer)null)).toResponse();\r\n this.threads = (GHThread[])response.body();\r\n if (this.threads == null) {\r\n this.threads = GHNotificationStream.EMPTY_ARRAY;\r\n } else {\r\n ++this.lastUpdated;\r\n }\r\n```\r\n**Expected behavior**\r\nA GHThread value should be given in return but throwing HttpException indicating the value of the header \"If-Modified-Since\" is null.\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1458/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1458/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1035", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1035/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1035/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1035/events", + "html_url": "https://github.com/hub4j/github-api/issues/1035", + "id": 806598555, + "node_id": "MDU6SXNzdWU4MDY1OTg1NTU=", + "number": 1035, + "title": "Add serialization JSON output ", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2021-02-11T17:33:16Z", + "updated_at": "2024-03-15T22:28:12Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Several users have filed issues around serializing objects to JSON: #1034, #971. \r\n\r\nConsider adding a `toJSON()` method to objects, `readRawJSON()` method to `GitHub`, or documenting a supported way to do this using the existing `ObjectMapper` returning methods.\r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1035/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1035/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1815", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1815/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1815/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1815/events", + "html_url": "https://github.com/hub4j/github-api/issues/1815", + "id": 2180302354, + "node_id": "I_kwDOAAlq-s6B9MYS", + "number": 1815, + "title": "Ban use of `Thread.sleep()` in tests unless specifically approved", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2024-03-11T21:38:43Z", + "updated_at": "2024-03-11T23:35:15Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "We add `await`-based pauses the don't slow down CI testing: \r\n\r\nhttps://github.com/hub4j/github-api/blob/main/src/test/java/org/kohsuke/github/GHWorkflowRunTest.java#L574-L584\r\n\r\nThere are some timing based tests, but they are the exception. Most tests don't need to care. \r\nWe need to make `await()` an easily used test helper, enforce not calling `Thread.sleep()` unless specifically approved, and provide a helpful failure message regarding using `await`. \r\n\r\nPerhaps also a `sleepWhenTakingSnapshot()` method. See #1810 for example of why. \r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1815/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1815/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1263", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1263/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1263/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1263/events", + "html_url": "https://github.com/hub4j/github-api/issues/1263", + "id": 1015548992, + "node_id": "I_kwDOAAlq-s48iAxA", + "number": 1263, + "title": "Consider how to use OpenAPI information to improve testing and verification", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + }, + { + "id": 1686292366, + "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", + "name": "more information needed", + "color": "9ce1ed", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2021-10-04T19:26:53Z", + "updated_at": "2024-03-11T22:47:10Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "See https://github.com/github/rest-api-description\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1263/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1263/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1768", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1768/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1768/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1768/events", + "html_url": "https://github.com/hub4j/github-api/issues/1768", + "id": 2025917953, + "node_id": "I_kwDOAAlq-s54wQ4B", + "number": 1768, + "title": "pr.listReviews().toList(); throws GHFileNotFoundException ", + "user": { + "login": "daniel-b2c2", + "id": 94372198, + "node_id": "U_kgDOBaABZg", + "avatar_url": "https://avatars.githubusercontent.com/u/94372198?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/daniel-b2c2", + "html_url": "https://github.com/daniel-b2c2", + "followers_url": "https://api.github.com/users/daniel-b2c2/followers", + "following_url": "https://api.github.com/users/daniel-b2c2/following{/other_user}", + "gists_url": "https://api.github.com/users/daniel-b2c2/gists{/gist_id}", + "starred_url": "https://api.github.com/users/daniel-b2c2/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/daniel-b2c2/subscriptions", + "organizations_url": "https://api.github.com/users/daniel-b2c2/orgs", + "repos_url": "https://api.github.com/users/daniel-b2c2/repos", + "events_url": "https://api.github.com/users/daniel-b2c2/events{/privacy}", + "received_events_url": "https://api.github.com/users/daniel-b2c2/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2023-12-05T11:00:56Z", + "updated_at": "2024-03-09T13:34:39Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\n`List ghPullRequestReviews = pr.listReviews().toList();`\r\nThe above code should return an empty list if no reviews exist, instead it throws GHFileNotFoundException \r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Create a pull request (but do not review it)\r\n2. Search for that pull request, and then list reviews as shown in the code snippet above.\r\n3. Observe the exception thrown.\r\n\r\n**Expected behavior**\r\nReturn an empty list when there are no reviews.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: mac\r\n - Browser NA\r\n - Version 1.318\r\n\r\n**Additional context**\r\nI think this is a regression and this behaviour wasn't like this in previous versions?", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1768/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1768/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + } + ] +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/5-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/5-search_issues.json new file mode 100644 index 0000000000..7717d61fe8 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/5-search_issues.json @@ -0,0 +1,2634 @@ +{ + "total_count": 164, + "incomplete_results": false, + "items": [ + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/494", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/494/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/494/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/494/events", + "html_url": "https://github.com/hub4j/github-api/issues/494", + "id": 407625055, + "node_id": "MDU6SXNzdWU0MDc2MjUwNTU=", + "number": 494, + "title": "Default branch is always null for repos accessed with GHContentSearchBuilder", + "user": { + "login": "fwdekker", + "id": 13442533, + "node_id": "MDQ6VXNlcjEzNDQyNTMz", + "avatar_url": "https://avatars.githubusercontent.com/u/13442533?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fwdekker", + "html_url": "https://github.com/fwdekker", + "followers_url": "https://api.github.com/users/fwdekker/followers", + "following_url": "https://api.github.com/users/fwdekker/following{/other_user}", + "gists_url": "https://api.github.com/users/fwdekker/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fwdekker/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fwdekker/subscriptions", + "organizations_url": "https://api.github.com/users/fwdekker/orgs", + "repos_url": "https://api.github.com/users/fwdekker/repos", + "events_url": "https://api.github.com/users/fwdekker/events{/privacy}", + "received_events_url": "https://api.github.com/users/fwdekker/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2019-02-07T10:14:51Z", + "updated_at": "2024-03-08T12:57:04Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "When information on a repository is downloaded using the `GHContentSearchBuilder`, the `defaultBranch` property is always `null`, regardless of whether the repository in question has a default branch. On the other hand, if the same repository is accessed using a simple `getRepository` call, the `defaultBranch` is set correctly.\r\n\r\n## Sample setup\r\n[This repository](https://github.com/Stargator/koskela_sourcecode) has a non-standard default branch, and does not have a `master` branch. I think it's a good example for this issue.\r\n\r\n### Correct behaviour\r\nThe following code returns `\"original\"`, as expected:\r\n```java\r\nGitHub gh = GitHub.connectUsingOAuth(/* insert your token here */);\r\nreturn gh.getRepository(\"Stargator/koskela_sourcecode\").getDefaultBranch();\r\n```\r\n\r\n### Incorrect behaviour\r\nThe following code always returns `null`:\r\n```java\r\nGitHub gh = GitHub.connectUsingOAuth(/* insert your token here */);\r\nGHContentSearchBuilder sb = gh.searchContent().user(\"Stargator\")\r\n .repo(\"Stargator/koskela_sourcecode\")\r\n .q(\"koskela\");\r\nGHContent repo = sb.list().asList().get(0);\r\nreturn repo.getOwner().getDefaultBranch();\r\n```\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/494/reactions", + "total_count": 2, + "+1": 2, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/494/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1782", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1782/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1782/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1782/events", + "html_url": "https://github.com/hub4j/github-api/issues/1782", + "id": 2088750334, + "node_id": "I_kwDOAAlq-s58f8z-", + "number": 1782, + "title": "Updating a label with a question mark results in an error", + "user": { + "login": "gsmet", + "id": 1279749, + "node_id": "MDQ6VXNlcjEyNzk3NDk=", + "avatar_url": "https://avatars.githubusercontent.com/u/1279749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/gsmet", + "html_url": "https://github.com/gsmet", + "followers_url": "https://api.github.com/users/gsmet/followers", + "following_url": "https://api.github.com/users/gsmet/following{/other_user}", + "gists_url": "https://api.github.com/users/gsmet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/gsmet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/gsmet/subscriptions", + "organizations_url": "https://api.github.com/users/gsmet/orgs", + "repos_url": "https://api.github.com/users/gsmet/repos", + "events_url": "https://api.github.com/users/gsmet/events{/privacy}", + "received_events_url": "https://api.github.com/users/gsmet/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2024-01-18T17:28:46Z", + "updated_at": "2024-01-19T00:26:28Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\n\r\nIn the Quarkus project, we used to have labels like `triage/backport?` (i.e. something that should be considered for backport but is not certain to be backported).\r\n\r\nWhen working on some automation, I stumbled upon the fact that updating the label name via the API was not possible as the `?` is not correctly escaped in the URI, thus the label not being found when fetched.\r\n\r\n```\r\nrepository.getLabel(\"triage/backport?\").update().name(\"triage/backport-3.6?\").done();\r\n```\r\nwould fail.\r\n\r\nI wanted to log the problem so that we don't forget about it.\r\nI renamed our labels for the time being.\r\n\r\nI'll try to contribute a fix soon but feel free to beat me to it :).\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1782/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1782/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1767", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1767/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1767/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1767/events", + "html_url": "https://github.com/hub4j/github-api/issues/1767", + "id": 2022024107, + "node_id": "I_kwDOAAlq-s54haOr", + "number": 1767, + "title": "List pending team invitations API", + "user": { + "login": "allburov", + "id": 4376814, + "node_id": "MDQ6VXNlcjQzNzY4MTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/4376814?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/allburov", + "html_url": "https://github.com/allburov", + "followers_url": "https://api.github.com/users/allburov/followers", + "following_url": "https://api.github.com/users/allburov/following{/other_user}", + "gists_url": "https://api.github.com/users/allburov/gists{/gist_id}", + "starred_url": "https://api.github.com/users/allburov/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/allburov/subscriptions", + "organizations_url": "https://api.github.com/users/allburov/orgs", + "repos_url": "https://api.github.com/users/allburov/repos", + "events_url": "https://api.github.com/users/allburov/events{/privacy}", + "received_events_url": "https://api.github.com/users/allburov/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2023-12-02T12:34:42Z", + "updated_at": "2023-12-08T12:49:55Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi!\r\nAs I can see there's no API for [List pending team invitations](https://docs.github.com/ru/rest/teams/members?apiVersion=2022-11-28#list-pending-team-invitations).\r\nIt'd be great to have it!", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1767/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1767/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1587", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1587/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1587/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1587/events", + "html_url": "https://github.com/hub4j/github-api/issues/1587", + "id": 1512344293, + "node_id": "I_kwDOAAlq-s5aJIrl", + "number": 1587, + "title": "Enhancement: support name update for GitHub Check Run", + "user": { + "login": "igorsmotto", + "id": 48068670, + "node_id": "MDQ6VXNlcjQ4MDY4Njcw", + "avatar_url": "https://avatars.githubusercontent.com/u/48068670?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/igorsmotto", + "html_url": "https://github.com/igorsmotto", + "followers_url": "https://api.github.com/users/igorsmotto/followers", + "following_url": "https://api.github.com/users/igorsmotto/following{/other_user}", + "gists_url": "https://api.github.com/users/igorsmotto/gists{/gist_id}", + "starred_url": "https://api.github.com/users/igorsmotto/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/igorsmotto/subscriptions", + "organizations_url": "https://api.github.com/users/igorsmotto/orgs", + "repos_url": "https://api.github.com/users/igorsmotto/repos", + "events_url": "https://api.github.com/users/igorsmotto/events{/privacy}", + "received_events_url": "https://api.github.com/users/igorsmotto/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2022-12-28T02:52:37Z", + "updated_at": "2023-12-04T11:07:19Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Currently, both create and update of a GitHub Check Run are handled by [GHCheckRunBuilder](https://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GHCheckRunBuilder.java) class. \r\nFor the update, this is done by constructing an instance with the [checkId](https://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GHCheckRunBuilder.java#L96)\r\n\r\nFollowing the latest GitHub documentation about the [GitHub Check Run Update API](https://docs.github.com/en/rest/checks/runs?apiVersion=2022-11-28#update-a-check-run) it's possible to update the name of the Check Run through it, however, `GHCheckRunBuilder` doesn't expose a method for it. \r\n\r\nThis is probably because the builder is currently handling both create (which doesn't allow it) and update.\r\n\r\nHowever, not sure what's the best approach to enable this, the easiest option that I could think of is by creating a new method `withName` to the Builder that throws an exception (a simple `GHException`) if the instance was created with a name - which means it's not an update.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1587/reactions", + "total_count": 3, + "+1": 3, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1587/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1179", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1179/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1179/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1179/events", + "html_url": "https://github.com/hub4j/github-api/issues/1179", + "id": 916680790, + "node_id": "MDU6SXNzdWU5MTY2ODA3OTA=", + "number": 1179, + "title": "Consumers of Preview APIs should have to explicitly enable the Previews they want", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2021-06-09T21:17:33Z", + "updated_at": "2023-11-30T18:22:32Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Related #1017 #1003\r\n\r\nCurrently, we mark preview APIs as deprecated. Instead we should require consumers to enable the specific Preview endpoints they want and by doing so they accept that those methods may change. \r\n\r\nWe can do this now. In v1, we can log warnings the first time a Preview endpoint is used without being enabled, but otherwise do not change behavior. For v2 we'll actually fail if a preview is used when it hasn't been enabled. ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1179/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1179/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1506", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1506/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1506/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1506/events", + "html_url": "https://github.com/hub4j/github-api/issues/1506", + "id": 1344481883, + "node_id": "I_kwDOAAlq-s5QIypb", + "number": 1506, + "title": "GHRepository#isDeleteBranchOnMerge alway returns false", + "user": { + "login": "alexsuter", + "id": 7498380, + "node_id": "MDQ6VXNlcjc0OTgzODA=", + "avatar_url": "https://avatars.githubusercontent.com/u/7498380?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/alexsuter", + "html_url": "https://github.com/alexsuter", + "followers_url": "https://api.github.com/users/alexsuter/followers", + "following_url": "https://api.github.com/users/alexsuter/following{/other_user}", + "gists_url": "https://api.github.com/users/alexsuter/gists{/gist_id}", + "starred_url": "https://api.github.com/users/alexsuter/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/alexsuter/subscriptions", + "organizations_url": "https://api.github.com/users/alexsuter/orgs", + "repos_url": "https://api.github.com/users/alexsuter/repos", + "events_url": "https://api.github.com/users/alexsuter/events{/privacy}", + "received_events_url": "https://api.github.com/users/alexsuter/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1686292366, + "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", + "name": "more information needed", + "color": "9ce1ed", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 10, + "created_at": "2022-08-19T13:58:14Z", + "updated_at": "2023-11-22T17:30:53Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nGHRepository#isDeleteBranchOnMerge alway returns false even if it's true\r\n\r\n**To Reproduce**\r\nCall GHRepository#isDeleteBranchOnMerge\r\n\r\n**Expected behavior**\r\nGHRepository#isDeleteBranchOnMerge should return true if its true\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1506/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1506/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1710", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1710/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1710/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1710/events", + "html_url": "https://github.com/hub4j/github-api/issues/1710", + "id": 1901098392, + "node_id": "I_kwDOAAlq-s5xUHWY", + "number": 1710, + "title": "Missing /admin/ldap/teams/:team_id/mapping call", + "user": { + "login": "Fuzzo", + "id": 6161201, + "node_id": "MDQ6VXNlcjYxNjEyMDE=", + "avatar_url": "https://avatars.githubusercontent.com/u/6161201?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fuzzo", + "html_url": "https://github.com/Fuzzo", + "followers_url": "https://api.github.com/users/Fuzzo/followers", + "following_url": "https://api.github.com/users/Fuzzo/following{/other_user}", + "gists_url": "https://api.github.com/users/Fuzzo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fuzzo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fuzzo/subscriptions", + "organizations_url": "https://api.github.com/users/Fuzzo/orgs", + "repos_url": "https://api.github.com/users/Fuzzo/repos", + "events_url": "https://api.github.com/users/Fuzzo/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fuzzo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 7, + "created_at": "2023-09-18T14:41:20Z", + "updated_at": "2023-11-19T07:06:48Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I'd like to know if is planned to have the call **/admin/ldap/teams/:team_id/mapping** (which takes `ldap_dn` as body parameter) implemented.\r\nThank you for developing this library.\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1710/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1710/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1738", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1738/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1738/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1738/events", + "html_url": "https://github.com/hub4j/github-api/issues/1738", + "id": 1984733821, + "node_id": "I_kwDOAAlq-s52TKJ9", + "number": 1738, + "title": "Meta: Consider squash merges instead of rebase", + "user": { + "login": "Haarolean", + "id": 1494347, + "node_id": "MDQ6VXNlcjE0OTQzNDc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Haarolean", + "html_url": "https://github.com/Haarolean", + "followers_url": "https://api.github.com/users/Haarolean/followers", + "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", + "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", + "organizations_url": "https://api.github.com/users/Haarolean/orgs", + "repos_url": "https://api.github.com/users/Haarolean/repos", + "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", + "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2023-11-09T03:04:26Z", + "updated_at": "2023-11-10T19:48:33Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi!\r\n\r\nJust a minor issue I've observed while scanning the git log, it seems that current PR merges into the master are being done via rebase strategy. \r\nI wanted to propose considering switching to a squash strategy, with that there won't be multiple commits for a single PR, which can be distracting.\r\nLike it is now:\r\n\"image\"\r\nPlus this commit:\r\n\"image\"\r\n\r\nWith squash, there would be just one commit like the second one.\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1738/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1738/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1717", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1717/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1717/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1717/events", + "html_url": "https://github.com/hub4j/github-api/issues/1717", + "id": 1907081687, + "node_id": "I_kwDOAAlq-s5xq8HX", + "number": 1717, + "title": "Add Option to disable SSL verification", + "user": { + "login": "HelvetiaAppDev", + "id": 55525429, + "node_id": "MDQ6VXNlcjU1NTI1NDI5", + "avatar_url": "https://avatars.githubusercontent.com/u/55525429?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/HelvetiaAppDev", + "html_url": "https://github.com/HelvetiaAppDev", + "followers_url": "https://api.github.com/users/HelvetiaAppDev/followers", + "following_url": "https://api.github.com/users/HelvetiaAppDev/following{/other_user}", + "gists_url": "https://api.github.com/users/HelvetiaAppDev/gists{/gist_id}", + "starred_url": "https://api.github.com/users/HelvetiaAppDev/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/HelvetiaAppDev/subscriptions", + "organizations_url": "https://api.github.com/users/HelvetiaAppDev/orgs", + "repos_url": "https://api.github.com/users/HelvetiaAppDev/repos", + "events_url": "https://api.github.com/users/HelvetiaAppDev/events{/privacy}", + "received_events_url": "https://api.github.com/users/HelvetiaAppDev/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2023-09-21T14:11:48Z", + "updated_at": "2023-10-20T20:54:51Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "We are behind a corporate firewall proxy, that decrypts and encrypts every traffic. Despite having the root certificate registered in Java, this library fails to connect to github.\r\n\r\n```\r\nCaused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\r\n\tat java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:578)\r\n\tat java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:123)\r\n\tat org.kohsuke.github.extras.HttpClientGitHubConnector.send(HttpClientGitHubConnector.java:72)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:431)\r\n\t... 6 more\r\nCaused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\r\n\tat java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)\r\n\tat java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:371)\r\n\tat java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:314)\r\n\tat java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:309)\r\n\tat java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1357)\r\n\tat java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1232)\r\n\tat java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1175)\r\n\tat java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396)\r\n\tat java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480)\r\n\tat java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1277)\r\n\tat java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1264)\r\n\tat java.base/java.security.AccessController.doPrivileged(AccessController.java:712)\r\n\tat java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask.run(SSLEngineImpl.java:1209)\r\n\tat java.base/java.util.ArrayList.forEach(ArrayList.java:1511)\r\n\tat java.net.http/jdk.internal.net.http.common.SSLFlowDelegate.lambda$executeTasks$3(SSLFlowDelegate.java:1118)\r\n\tat java.net.http/jdk.internal.net.http.HttpClientImpl$DelegatingExecutor.execute(HttpClientImpl.java:157)\r\n\tat java.net.http/jdk.internal.net.http.common.SSLFlowDelegate.executeTasks(SSLFlowDelegate.java:1113)\r\n\tat java.net.http/jdk.internal.net.http.common.SSLFlowDelegate.doHandshake(SSLFlowDelegate.java:1079)\r\n\tat java.net.http/jdk.internal.net.http.common.SSLFlowDelegate$Reader.processData(SSLFlowDelegate.java:484)\r\n\tat java.net.http/jdk.internal.net.http.common.SSLFlowDelegate$Reader$ReaderDownstreamPusher.run(SSLFlowDelegate.java:268)\r\n\tat java.net.http/jdk.internal.net.http.common.SequentialScheduler$LockingRestartableTask.run(SequentialScheduler.java:205)\r\n\tat java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:149)\r\n\tat java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:230)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)\r\n\tat java.base/java.lang.Thread.run(Thread.java:833)\r\nCaused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\r\n\tat java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439)\r\n\tat java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306)\r\n\tat java.base/sun.security.validator.Validator.validate(Validator.java:264)\r\n\tat java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:285)\r\n\tat java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:144)\r\n\tat java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1335)\r\n\t... 21 more\r\nCaused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\r\n\tat java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)\r\n\tat java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)\r\n\tat java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)\r\n\tat java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)\r\n\t... 26 more\r\n\r\n```\r\n\r\nOur current Solution is to provide a custom connector that ignores all checks, but as setConnector is deprecated it would be appreciated, if there was some option to do this e.g. disableSSLVerification.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1717/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1717/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/348", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/348/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/348/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/348/events", + "html_url": "https://github.com/hub4j/github-api/issues/348", + "id": 215463892, + "node_id": "MDU6SXNzdWUyMTU0NjM4OTI=", + "number": 348, + "title": "Skip and page selection support in PagedIterator/PagedIterable", + "user": { + "login": "JakubKahovec", + "id": 32606, + "node_id": "MDQ6VXNlcjMyNjA2", + "avatar_url": "https://avatars.githubusercontent.com/u/32606?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/JakubKahovec", + "html_url": "https://github.com/JakubKahovec", + "followers_url": "https://api.github.com/users/JakubKahovec/followers", + "following_url": "https://api.github.com/users/JakubKahovec/following{/other_user}", + "gists_url": "https://api.github.com/users/JakubKahovec/gists{/gist_id}", + "starred_url": "https://api.github.com/users/JakubKahovec/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/JakubKahovec/subscriptions", + "organizations_url": "https://api.github.com/users/JakubKahovec/orgs", + "repos_url": "https://api.github.com/users/JakubKahovec/repos", + "events_url": "https://api.github.com/users/JakubKahovec/events{/privacy}", + "received_events_url": "https://api.github.com/users/JakubKahovec/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + }, + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 11, + "created_at": "2017-03-20T15:47:54Z", + "updated_at": "2023-10-20T17:18:49Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hello,\r\n\r\nwhen listing users the GitHub Api provides a parameter _since_ which allows you to specify an id of the user you've seen the last, when you start listing again (i.e after a crash) you skip the users you've seen. It'd great to have this parameter in the api i.e github.listUsers(sinceUserId). Do you think it would be feasible to add it there ?\r\n\r\nThank you\r\n\r\nJakub", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/348/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/348/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1614", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1614/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1614/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1614/events", + "html_url": "https://github.com/hub4j/github-api/issues/1614", + "id": 1571359526, + "node_id": "I_kwDOAAlq-s5dqQsm", + "number": 1614, + "title": "Feature Request - Total Count for PagedIterable", + "user": { + "login": "bchenghi", + "id": 57175876, + "node_id": "MDQ6VXNlcjU3MTc1ODc2", + "avatar_url": "https://avatars.githubusercontent.com/u/57175876?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bchenghi", + "html_url": "https://github.com/bchenghi", + "followers_url": "https://api.github.com/users/bchenghi/followers", + "following_url": "https://api.github.com/users/bchenghi/following{/other_user}", + "gists_url": "https://api.github.com/users/bchenghi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bchenghi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bchenghi/subscriptions", + "organizations_url": "https://api.github.com/users/bchenghi/orgs", + "repos_url": "https://api.github.com/users/bchenghi/repos", + "events_url": "https://api.github.com/users/bchenghi/events{/privacy}", + "received_events_url": "https://api.github.com/users/bchenghi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2023-02-05T09:23:12Z", + "updated_at": "2023-10-14T07:49:04Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I believe the GitHub API provides total number of pages in the response's Link header.\r\n\r\nThis could be useful, for instance, counting total number of commits in a repository. We can set page_size to 1 for listing commits on a GHRepository. Obtaining the total number of pages would tell us the total number of commits.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1614/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1614/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/988", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/988/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/988/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/988/events", + "html_url": "https://github.com/hub4j/github-api/issues/988", + "id": 753040877, + "node_id": "MDU6SXNzdWU3NTMwNDA4Nzc=", + "number": 988, + "title": "Updating branch protection details is very cumbersome", + "user": { + "login": "Vampire", + "id": 325196, + "node_id": "MDQ6VXNlcjMyNTE5Ng==", + "avatar_url": "https://avatars.githubusercontent.com/u/325196?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Vampire", + "html_url": "https://github.com/Vampire", + "followers_url": "https://api.github.com/users/Vampire/followers", + "following_url": "https://api.github.com/users/Vampire/following{/other_user}", + "gists_url": "https://api.github.com/users/Vampire/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Vampire/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Vampire/subscriptions", + "organizations_url": "https://api.github.com/users/Vampire/orgs", + "repos_url": "https://api.github.com/users/Vampire/repos", + "events_url": "https://api.github.com/users/Vampire/events{/privacy}", + "received_events_url": "https://api.github.com/users/Vampire/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2020-11-29T23:14:31Z", + "updated_at": "2023-08-14T19:39:15Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I have a project where I have various branch protections enabled like linear history, required status checks, and so on and those restrictions should also be valid for administrators usually to not have a broken state on `master`.\r\n\r\nBut when creating a release, I actually want to push one merge commit to `master` and also without having the status checks run before as this would need manual intervention.\r\n\r\nSo I thought I simply make a Gradle task that removes the \"also for administrators\" flag before the push and another task that again enables that flag that is run after the task that pushes to `master`.\r\n\r\nThe problem is, that this lib does not allow to change only one detail, but you always have to supply the full set of protection rules. When I just did `....enableProtection().includeAdmins(false).enable()`, all other properties were unset.\r\nBut I also don't want to maintain the restrictions in the code.\r\nAnd taking the protections from the current protection object, setting them on the builder is extremely cumbersome and boiler-platey and also if some attributes get added, suddenly the logic will be wrong as it will not be copied over along except if you use reflection for this, which also would not work anyway due to inconsistencies in naming (e. g. `requiredChecks` vs. `contexts`).\r\n\r\nIt would be nice if this could be enhanced, for example by having some `copy attributes from this protection instance` method, or maybe even better an additional `updateProtection()` method that has all properties set like they currently are and then allows to update only the things that should be changed.\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/988/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/988/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1640", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1640/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1640/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1640/events", + "html_url": "https://github.com/hub4j/github-api/issues/1640", + "id": 1662049369, + "node_id": "I_kwDOAAlq-s5jENxZ", + "number": 1640, + "title": "Missing feature: detete an issue", + "user": { + "login": "sivantoledo", + "id": 1524989, + "node_id": "MDQ6VXNlcjE1MjQ5ODk=", + "avatar_url": "https://avatars.githubusercontent.com/u/1524989?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sivantoledo", + "html_url": "https://github.com/sivantoledo", + "followers_url": "https://api.github.com/users/sivantoledo/followers", + "following_url": "https://api.github.com/users/sivantoledo/following{/other_user}", + "gists_url": "https://api.github.com/users/sivantoledo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sivantoledo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sivantoledo/subscriptions", + "organizations_url": "https://api.github.com/users/sivantoledo/orgs", + "repos_url": "https://api.github.com/users/sivantoledo/repos", + "events_url": "https://api.github.com/users/sivantoledo/events{/privacy}", + "received_events_url": "https://api.github.com/users/sivantoledo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2023-04-11T08:59:01Z", + "updated_at": "2023-07-13T00:17:07Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi, I am using the library, thank you very much! Works great.\r\n\r\nI am using it mostly to manage issues, and I need a method to completely delete an issue, not only to close it. On the GitHub web interface there is a button to delete an issue, so I assume that this is possible via the API. However, there is no method in GHIssue to delete an issue.\r\n\r\nThe CLI tool \"gh\" does allow deleting an issue, so I assume that this is possible through the API. \r\n\r\nCan you please add a delete or removeIssue to GHIssue.java?\r\n\r\nThank you very much, Sivan", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1640/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1640/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1558", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1558/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1558/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1558/events", + "html_url": "https://github.com/hub4j/github-api/issues/1558", + "id": 1428248411, + "node_id": "I_kwDOAAlq-s5VIVdb", + "number": 1558, + "title": "GHRepository.getContent does not handle properly files bigger than 1MB", + "user": { + "login": "blacelle", + "id": 2117911, + "node_id": "MDQ6VXNlcjIxMTc5MTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2117911?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/blacelle", + "html_url": "https://github.com/blacelle", + "followers_url": "https://api.github.com/users/blacelle/followers", + "following_url": "https://api.github.com/users/blacelle/following{/other_user}", + "gists_url": "https://api.github.com/users/blacelle/gists{/gist_id}", + "starred_url": "https://api.github.com/users/blacelle/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/blacelle/subscriptions", + "organizations_url": "https://api.github.com/users/blacelle/orgs", + "repos_url": "https://api.github.com/users/blacelle/repos", + "events_url": "https://api.github.com/users/blacelle/events{/privacy}", + "received_events_url": "https://api.github.com/users/blacelle/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2022-10-29T12:44:40Z", + "updated_at": "2023-07-02T18:09:58Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nWhen considering a file with size >= 1MB, the library fails with `Unrecognized encoding: none` in org.kohsuke.github.GHContent.read()\r\n\r\n**To Reproduce**\r\nPush a file > 1MB, and try `GHRepository.getContent().read()`\r\n\r\n**Expected behavior**\r\nProperly fetching of the file content\r\n\r\n**Additional context**\r\nGitHub API has a specific behavior on large files: see https://docs.github.com/en/rest/repos/contents#size-limits.\r\n\r\n> Between 1-100 MB: Only the raw or object [custom media types](https://docs.github.com/rest/repos/contents#custom-media-types-for-repository-contents) are supported. Both will work as normal, except that when using the object media type, the content field will be an empty string and the encoding field will be \"none\". To get the contents of these larger files, use the raw media type.\r\n\r\n![image](https://user-images.githubusercontent.com/2117911/198832024-30c90bcf-cbb4-4e8a-bf72-77cf9c229f71.png)\r\n\r\nI suppose we would have in such a edge-case to rely on `Accept: application/vnd.github.v3.raw` header.\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1558/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1558/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1657", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1657/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1657/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1657/events", + "html_url": "https://github.com/hub4j/github-api/issues/1657", + "id": 1708788874, + "node_id": "I_kwDOAAlq-s5l2gyK", + "number": 1657, + "title": "createCommitStatus method return status success but the update is not happening in GITHUB ", + "user": { + "login": "bostsnow", + "id": 54145796, + "node_id": "MDQ6VXNlcjU0MTQ1Nzk2", + "avatar_url": "https://avatars.githubusercontent.com/u/54145796?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bostsnow", + "html_url": "https://github.com/bostsnow", + "followers_url": "https://api.github.com/users/bostsnow/followers", + "following_url": "https://api.github.com/users/bostsnow/following{/other_user}", + "gists_url": "https://api.github.com/users/bostsnow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bostsnow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bostsnow/subscriptions", + "organizations_url": "https://api.github.com/users/bostsnow/orgs", + "repos_url": "https://api.github.com/users/bostsnow/repos", + "events_url": "https://api.github.com/users/bostsnow/events{/privacy}", + "received_events_url": "https://api.github.com/users/bostsnow/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1686292366, + "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", + "name": "more information needed", + "color": "9ce1ed", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2023-05-14T01:50:36Z", + "updated_at": "2023-06-30T19:58:42Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Description**\r\nWe are using the version 1.307 and we call the createCommitStatus like below. \r\n\r\n```\r\nGHRepository repository = gitHub.getRepository(\r\n SLASH_JOINER.join(request.getOrg(), request.getRepo())\r\n );\r\n\r\nString headSha = repository\r\n .getPullRequest(request.getPullNumber())\r\n .getHead()\r\n .getSha();\r\n\r\nGHCommitStatus commitStatus = repository.createCommitStatus(\r\n headSha,\r\n GHCommitState.SUCCESS,\r\n someUrl,\r\n someDescription,\r\n context()\r\n );\r\n```\r\n\r\nThe response commitStatus status is '**SUCCESS**' but Github is still not updated.\r\nWhat really can go wrong here ? \r\n\r\n**Note**: Its not consistent, out of 10 call, 1 update is not happening.\r\n\r\n**Additional Detail**\r\nOn each commit we re-evaluate the logic and call the createCommitStatus. ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1657/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1657/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1656", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1656/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1656/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1656/events", + "html_url": "https://github.com/hub4j/github-api/issues/1656", + "id": 1699052410, + "node_id": "I_kwDOAAlq-s5lRXt6", + "number": 1656, + "title": "Reattaching an entity to another client instance", + "user": { + "login": "Haarolean", + "id": 1494347, + "node_id": "MDQ6VXNlcjE0OTQzNDc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Haarolean", + "html_url": "https://github.com/Haarolean", + "followers_url": "https://api.github.com/users/Haarolean/followers", + "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", + "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", + "organizations_url": "https://api.github.com/users/Haarolean/orgs", + "repos_url": "https://api.github.com/users/Haarolean/repos", + "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", + "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1686292366, + "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", + "name": "more information needed", + "color": "9ce1ed", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2023-05-07T12:53:01Z", + "updated_at": "2023-05-22T16:30:17Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi,\r\n\r\nI've got a situation like this:\r\n\r\n1. My app does listen to incoming webhooks, I parse the payload with an instance of a client authenticated **as an app** with a JWT token.\r\n2. After that, once I realize which type of payload I have I fetch some info, like an issue from the payload and I have to do additional things which require **app installation** authentication.\r\n\r\nWith this approach I get stuck with an instance of `GHIssue` fetch via and tied to a client instance authenticated as an app, but in order to do other things I have to reauthenticate as an app installation. I couldn't find a way to do this. A dirty approach would be changing `root` of the issue instance's `GitHubInteractiveObject`, but the field is r/o. \r\nIs there a way to do this now, am I missing something?\r\nif not, mind any suggestions? I'd suggest implementing a method to \"rebind\" an entity (`GitHubInteractiveObject`) to another provided instance of a github client. Any possible issues with that approach?\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1656/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1656/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/126", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/126/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/126/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/126/events", + "html_url": "https://github.com/hub4j/github-api/issues/126", + "id": 42053515, + "node_id": "MDU6SXNzdWU0MjA1MzUxNQ==", + "number": 126, + "title": "github-api does in not correctly distinguish between user and organisation ownership", + "user": { + "login": "msperisen", + "id": 2448228, + "node_id": "MDQ6VXNlcjI0NDgyMjg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2448228?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/msperisen", + "html_url": "https://github.com/msperisen", + "followers_url": "https://api.github.com/users/msperisen/followers", + "following_url": "https://api.github.com/users/msperisen/following{/other_user}", + "gists_url": "https://api.github.com/users/msperisen/gists{/gist_id}", + "starred_url": "https://api.github.com/users/msperisen/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/msperisen/subscriptions", + "organizations_url": "https://api.github.com/users/msperisen/orgs", + "repos_url": "https://api.github.com/users/msperisen/repos", + "events_url": "https://api.github.com/users/msperisen/events{/privacy}", + "received_events_url": "https://api.github.com/users/msperisen/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2014-09-05T14:45:51Z", + "updated_at": "2023-05-05T13:48:03Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "owners are always returned as GHUsers instead of GHOrganizations or GHUsers. Many github api calls return users and organisations alike and the distinction is made based on the type field. Making GHPerson reflect that:\n\n``` java\n@JsonTypeInfo(use=JsonTypeInfo.Id.NAME,\n include=JsonTypeInfo.As.PROPERTY,\n property=\"type\")\n@JsonSubTypes({\n @JsonSubTypes.Type(value=GHUser.class, name=\"User\"),\n @JsonSubTypes.Type(value=GHOrganization.class, name=\"Organization\"),\n})\npublic abstract class GHPerson {\n```\n\nwill break a lot of owner related githup-api calls \n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/126/reactions", + "total_count": 2, + "+1": 2, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/126/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1645", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1645/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1645/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1645/events", + "html_url": "https://github.com/hub4j/github-api/issues/1645", + "id": 1679337516, + "node_id": "I_kwDOAAlq-s5kGKgs", + "number": 1645, + "title": "Allow creation of comments using line number, rather than position", + "user": { + "login": "alexec", + "id": 1142830, + "node_id": "MDQ6VXNlcjExNDI4MzA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1142830?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/alexec", + "html_url": "https://github.com/alexec", + "followers_url": "https://api.github.com/users/alexec/followers", + "following_url": "https://api.github.com/users/alexec/following{/other_user}", + "gists_url": "https://api.github.com/users/alexec/gists{/gist_id}", + "starred_url": "https://api.github.com/users/alexec/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/alexec/subscriptions", + "organizations_url": "https://api.github.com/users/alexec/orgs", + "repos_url": "https://api.github.com/users/alexec/repos", + "events_url": "https://api.github.com/users/alexec/events{/privacy}", + "received_events_url": "https://api.github.com/users/alexec/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2023-04-22T05:02:43Z", + "updated_at": "2023-04-30T10:00:43Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "#1463 allowed you to list PR review comments with `line`. It did not allow you to create a comment using `line`. This is much easier than using position as it avoids a complex calculation.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1645/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1645/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1615", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1615/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1615/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1615/events", + "html_url": "https://github.com/hub4j/github-api/issues/1615", + "id": 1591180009, + "node_id": "I_kwDOAAlq-s5e13rp", + "number": 1615, + "title": "Feature Request: List Organization app installations", + "user": { + "login": "Har-sha-256", + "id": 56919509, + "node_id": "MDQ6VXNlcjU2OTE5NTA5", + "avatar_url": "https://avatars.githubusercontent.com/u/56919509?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Har-sha-256", + "html_url": "https://github.com/Har-sha-256", + "followers_url": "https://api.github.com/users/Har-sha-256/followers", + "following_url": "https://api.github.com/users/Har-sha-256/following{/other_user}", + "gists_url": "https://api.github.com/users/Har-sha-256/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Har-sha-256/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Har-sha-256/subscriptions", + "organizations_url": "https://api.github.com/users/Har-sha-256/orgs", + "repos_url": "https://api.github.com/users/Har-sha-256/repos", + "events_url": "https://api.github.com/users/Har-sha-256/events{/privacy}", + "received_events_url": "https://api.github.com/users/Har-sha-256/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2023-02-20T05:40:39Z", + "updated_at": "2023-04-27T01:14:38Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Feature Request: GET /orgs/{org}/installations\r\n\r\nhttps://docs.github.com/en/rest/orgs/orgs?apiVersion=2022-11-28#list-app-installations-for-an-organization\r\n\r\nRequesting this api for an Organization object", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1615/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1615/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1646", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1646/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1646/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1646/events", + "html_url": "https://github.com/hub4j/github-api/issues/1646", + "id": 1680231459, + "node_id": "I_kwDOAAlq-s5kJkwj", + "number": 1646, + "title": "Enhancement: ParseEventPayload: Parse the event type automatically", + "user": { + "login": "Haarolean", + "id": 1494347, + "node_id": "MDQ6VXNlcjE0OTQzNDc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Haarolean", + "html_url": "https://github.com/Haarolean", + "followers_url": "https://api.github.com/users/Haarolean/followers", + "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", + "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", + "organizations_url": "https://api.github.com/users/Haarolean/orgs", + "repos_url": "https://api.github.com/users/Haarolean/repos", + "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", + "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2023-04-24T00:06:56Z", + "updated_at": "2023-04-27T01:13:19Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi, I noticed the following documentation on `GitHub#parseEventPayload`:\r\n\r\n```\r\n[...] Unfortunately, hook script payloads aren't self-descriptive, so you need to know the type of payload you are expecting.\r\n```\r\n\r\nAs far as I see, the event type is present within `x-github-event` header of the incoming hook request. \r\n\r\nAs stated [here](https://docs.github.com/webhooks-and-events/webhooks/webhook-events-and-payloads#installation):\r\n\"image\"\r\n\r\nI've checked the request and the event name does really match the ones available on the aforementioned page. \r\n\r\nCould we match the event type strings to `GHEventPayload` implementations so we don't have to provide the type?\r\n\r\nP.S. Thanks for the great library! ❤️\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1646/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1646/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/837", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/837/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/837/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/837/events", + "html_url": "https://github.com/hub4j/github-api/issues/837", + "id": 631036684, + "node_id": "MDU6SXNzdWU2MzEwMzY2ODQ=", + "number": 837, + "title": "API should expose ability to create and delete impersonation OAuth token", + "user": { + "login": "bmuschko", + "id": 440872, + "node_id": "MDQ6VXNlcjQ0MDg3Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/440872?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bmuschko", + "html_url": "https://github.com/bmuschko", + "followers_url": "https://api.github.com/users/bmuschko/followers", + "following_url": "https://api.github.com/users/bmuschko/following{/other_user}", + "gists_url": "https://api.github.com/users/bmuschko/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bmuschko/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bmuschko/subscriptions", + "organizations_url": "https://api.github.com/users/bmuschko/orgs", + "repos_url": "https://api.github.com/users/bmuschko/repos", + "events_url": "https://api.github.com/users/bmuschko/events{/privacy}", + "received_events_url": "https://api.github.com/users/bmuschko/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2020-06-04T18:00:57Z", + "updated_at": "2023-04-15T22:49:23Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Currently, this library does not expose methods for the API that can [Create an impersonation OAuth token](https://developer.github.com/enterprise/2.20/v3/enterprise-admin/users/#create-an-impersonation-oauth-token) or [Delete an impersonation OAuth token](https://developer.github.com/enterprise/2.20/v3/enterprise-admin/users/#delete-an-impersonation-oauth-token).", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/837/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/837/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1631", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1631/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1631/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1631/events", + "html_url": "https://github.com/hub4j/github-api/issues/1631", + "id": 1632667135, + "node_id": "I_kwDOAAlq-s5hUIX_", + "number": 1631, + "title": "Add support for GitHub REST API versioning", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2023-03-20T18:38:35Z", + "updated_at": "2023-03-20T18:39:05Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "GitHub REST API is now versioned. https://docs.github.com/en/rest/overview/api-versions?apiVersion=2022-11-28\r\n\r\nI've already filed another issue around supporting different versions of GitHub Server. This is related. \r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1631/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1631/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1598", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1598/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1598/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1598/events", + "html_url": "https://github.com/hub4j/github-api/issues/1598", + "id": 1527710615, + "node_id": "I_kwDOAAlq-s5bDwOX", + "number": 1598, + "title": "GHInvitation getId always returns 0", + "user": { + "login": "noah-lawrence", + "id": 35925330, + "node_id": "MDQ6VXNlcjM1OTI1MzMw", + "avatar_url": "https://avatars.githubusercontent.com/u/35925330?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/noah-lawrence", + "html_url": "https://github.com/noah-lawrence", + "followers_url": "https://api.github.com/users/noah-lawrence/followers", + "following_url": "https://api.github.com/users/noah-lawrence/following{/other_user}", + "gists_url": "https://api.github.com/users/noah-lawrence/gists{/gist_id}", + "starred_url": "https://api.github.com/users/noah-lawrence/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/noah-lawrence/subscriptions", + "organizations_url": "https://api.github.com/users/noah-lawrence/orgs", + "repos_url": "https://api.github.com/users/noah-lawrence/repos", + "events_url": "https://api.github.com/users/noah-lawrence/events{/privacy}", + "received_events_url": "https://api.github.com/users/noah-lawrence/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2023-01-10T16:49:56Z", + "updated_at": "2023-01-31T20:32:33Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nGHInvitation getId returns 'id' from GHObject, which defaults to 0. However, the correct invitation id is available in the private 'id' field on GHInvitation.\r\n\r\n**To Reproduce**\r\n1. Create a GitHub repository\r\n2. Add a collaborator (an invitation will be sent)\r\n3. Run below code: \r\n```java\r\nghRepository.listInvitations().forEach(invitation -> System.out.println(invitation.getId()));\r\n```\r\n4. 0 is printed for each invitation, rather than the invitation id.\r\n\r\n**Expected behavior**\r\nThe correct invitation id is printed, instead of 0.\r\n\r\n**Additional context**\r\nI would like to be able to delete a GitHub invitation as an account owner of a repository.\r\nGitHub's API has [this](https://docs.github.com/en/rest/collaborators/invitations?apiVersion=2022-11-28#delete-a-repository-invitation) endpoint to delete an invitation manually, but the invitation id is required.\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1598/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1598/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1580", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1580/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1580/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1580/events", + "html_url": "https://github.com/hub4j/github-api/issues/1580", + "id": 1501841928, + "node_id": "I_kwDOAAlq-s5ZhEoI", + "number": 1580, + "title": "URISyntaxException when I search in repository", + "user": { + "login": "turbanoff", + "id": 741251, + "node_id": "MDQ6VXNlcjc0MTI1MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/741251?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/turbanoff", + "html_url": "https://github.com/turbanoff", + "followers_url": "https://api.github.com/users/turbanoff/followers", + "following_url": "https://api.github.com/users/turbanoff/following{/other_user}", + "gists_url": "https://api.github.com/users/turbanoff/gists{/gist_id}", + "starred_url": "https://api.github.com/users/turbanoff/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/turbanoff/subscriptions", + "organizations_url": "https://api.github.com/users/turbanoff/orgs", + "repos_url": "https://api.github.com/users/turbanoff/repos", + "events_url": "https://api.github.com/users/turbanoff/events{/privacy}", + "received_events_url": "https://api.github.com/users/turbanoff/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2022-12-18T09:57:57Z", + "updated_at": "2023-01-25T17:52:55Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nI noticed that search in repositories is unreliable sometimes and could fail with `URISyntaxException`.\r\nExample:\r\n```\r\nException in thread \"main\" org.kohsuke.github.HttpException: Server returned HTTP response code: -1, message: 'null' for URL: https://api.github.com/repositories/376556942/contents/tasks/]?ref=bbdc0107c309ee7c340b99d537b0db460e30bdf4\r\n\tat org.kohsuke.github.GitHubClient.interpretApiError(GitHubClient.java:596)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:449)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:403)\r\n\tat org.kohsuke.github.Requester.fetchInto(Requester.java:102)\r\n\tat org.kohsuke.github.GHContent.refresh(GHContent.java:423)\r\n\tat org.kohsuke.github.Refreshable.refresh(Refreshable.java:30)\r\n\tat org.kohsuke.github.GHContent.read(GHContent.java:188)\r\n\tat org.christmas.token.GithubApi.main(GithubApi.java:21)\r\nCaused by: java.io.IOException: Invalid URL\r\n\tat org.kohsuke.github.extras.HttpClientGitHubConnector.send(HttpClientGitHubConnector.java:53)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:432)\r\n\t... 6 more\r\nCaused by: java.net.URISyntaxException: Illegal character in path at index 61: https://api.github.com/repositories/376556942/contents/tasks/]?ref=bbdc0107c309ee7c340b99d537b0db460e30bdf4\r\n\tat java.base/java.net.URI$Parser.fail(URI.java:2974)\r\n\tat java.base/java.net.URI$Parser.checkChars(URI.java:3145)\r\n\tat java.base/java.net.URI$Parser.parseHierarchical(URI.java:3227)\r\n\tat java.base/java.net.URI$Parser.parse(URI.java:3175)\r\n\tat java.base/java.net.URI.(URI.java:623)\r\n\tat java.base/java.net.URL.toURI(URL.java:1056)\r\n\tat org.kohsuke.github.extras.HttpClientGitHubConnector.send(HttpClientGitHubConnector.java:51)\r\n\t... 7 more\r\n```\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\nRun following program:\r\n```\r\n public static void main(String[] args) throws Exception {\r\n GitHub gitHub = GitHub.connectUsingOAuth(GITHUB_TOKEN);\r\n PagedSearchIterable iterable = gitHub.searchContent()\r\n .q(\"print\")\r\n .repo(\"worlddeleteRin/vkproj\")\r\n .list();\r\n for (GHContent content : iterable) {\r\n try (InputStream read = content.read()) {\r\n ByteArrayOutputStream baos = new ByteArrayOutputStream();\r\n read.transferTo(baos);\r\n System.out.println(baos.toString(StandardCharsets.UTF_8));\r\n }\r\n }\r\n }\r\n```\r\nand check errors in the output\r\n\r\n**Expected behavior**\r\nLibrary could handle unexpected symbols in URLs better. Escape them?\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1580/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1580/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1582", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1582/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1582/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1582/events", + "html_url": "https://github.com/hub4j/github-api/issues/1582", + "id": 1503158949, + "node_id": "I_kwDOAAlq-s5ZmGKl", + "number": 1582, + "title": "Enhancement: support GitHub API to `rerun-failed-jobs`", + "user": { + "login": "ahus1", + "id": 3957921, + "node_id": "MDQ6VXNlcjM5NTc5MjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/3957921?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ahus1", + "html_url": "https://github.com/ahus1", + "followers_url": "https://api.github.com/users/ahus1/followers", + "following_url": "https://api.github.com/users/ahus1/following{/other_user}", + "gists_url": "https://api.github.com/users/ahus1/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ahus1/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ahus1/subscriptions", + "organizations_url": "https://api.github.com/users/ahus1/orgs", + "repos_url": "https://api.github.com/users/ahus1/repos", + "events_url": "https://api.github.com/users/ahus1/events{/privacy}", + "received_events_url": "https://api.github.com/users/ahus1/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2022-12-19T15:35:48Z", + "updated_at": "2023-01-25T17:51:11Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "When looking at `GHWorkflowRun`, there is the method `rerun()` but no method to rerun only failed tests. \r\n\r\nIt's documented in the API here: https://docs.github.com/en/rest/actions/workflow-runs?apiVersion=2022-11-28#re-run-failed-jobs-from-a-workflow-run\r\n\r\nThis has been added to the octokit client in June 15, see https://github.com/octokit/plugin-rest-endpoint-methods.js/releases/tag/v5.14.0\r\n\r\nIt would be great to have this in the Java API as well. \r\n\r\nThanks!", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1582/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1582/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/452", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/452/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/452/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/452/events", + "html_url": "https://github.com/hub4j/github-api/issues/452", + "id": 354016699, + "node_id": "MDU6SXNzdWUzNTQwMTY2OTk=", + "number": 452, + "title": "Support for attachments on Issues (Add, Get, and Remove)", + "user": { + "login": "GaborCsikos", + "id": 5442111, + "node_id": "MDQ6VXNlcjU0NDIxMTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/5442111?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/GaborCsikos", + "html_url": "https://github.com/GaborCsikos", + "followers_url": "https://api.github.com/users/GaborCsikos/followers", + "following_url": "https://api.github.com/users/GaborCsikos/following{/other_user}", + "gists_url": "https://api.github.com/users/GaborCsikos/gists{/gist_id}", + "starred_url": "https://api.github.com/users/GaborCsikos/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/GaborCsikos/subscriptions", + "organizations_url": "https://api.github.com/users/GaborCsikos/orgs", + "repos_url": "https://api.github.com/users/GaborCsikos/repos", + "events_url": "https://api.github.com/users/GaborCsikos/events{/privacy}", + "received_events_url": "https://api.github.com/users/GaborCsikos/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1686290078, + "node_id": "MDU6TGFiZWwxNjg2MjkwMDc4", + "url": "https://api.github.com/repos/hub4j/github-api/labels/external", + "name": "external", + "color": "a0a0a0", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2018-08-25T14:28:54Z", + "updated_at": "2023-01-02T21:30:41Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I want to download attachments added to Github issue.\r\nUsually an attachment is added to in Issue into the body of the comment.\r\n\r\nMy problem is the GHIssueComment has a body as a String. So i can not get the attachments.\r\n\r\nI could see that the GHRepository has a method getBlob(String blobSha)\r\nBut I do not know that this is what i need, also i do not know the blobSha.\r\n\r\nHow could I get the attachments uploaded to issues?", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/452/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/452/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1549", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1549/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1549/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1549/events", + "html_url": "https://github.com/hub4j/github-api/issues/1549", + "id": 1414681945, + "node_id": "I_kwDOAAlq-s5UUlVZ", + "number": 1549, + "title": "Feature Request: Get template repo details from created repository", + "user": { + "login": "AmyShields-EN0085", + "id": 82226842, + "node_id": "MDQ6VXNlcjgyMjI2ODQy", + "avatar_url": "https://avatars.githubusercontent.com/u/82226842?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/AmyShields-EN0085", + "html_url": "https://github.com/AmyShields-EN0085", + "followers_url": "https://api.github.com/users/AmyShields-EN0085/followers", + "following_url": "https://api.github.com/users/AmyShields-EN0085/following{/other_user}", + "gists_url": "https://api.github.com/users/AmyShields-EN0085/gists{/gist_id}", + "starred_url": "https://api.github.com/users/AmyShields-EN0085/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/AmyShields-EN0085/subscriptions", + "organizations_url": "https://api.github.com/users/AmyShields-EN0085/orgs", + "repos_url": "https://api.github.com/users/AmyShields-EN0085/repos", + "events_url": "https://api.github.com/users/AmyShields-EN0085/events{/privacy}", + "received_events_url": "https://api.github.com/users/AmyShields-EN0085/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2022-10-19T10:06:04Z", + "updated_at": "2022-12-14T14:04:23Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "It would be great to be able to get the template repository details from a created repo - so you could know what repository the created repo is based off.\r\n\r\nThis information is available through the rest API. \r\n\r\nExample on a simple GET request to https://api.github.com/repos/org/reponame - I would love to expose the template_repository json object\r\n```\r\n{\r\n \"id\":xxxx,\r\n \"node_id\": \"R_kgDOIQCw0A\",\r\n \"name\": \"test-generic-repo\",\r\n \"full_name\": \"orgt/test-generic-repo\",\r\n \"private\": true,\r\n \"**template_repository**\": {\r\n \"id\": 470521023,\r\n \"node_id\": \"R_kgDOHAuUvw\",\r\n \"name\": \"my-template\",\r\n \"full_name\": \"org/my-template\",\r\n \"private\": true,\r\n \"owner\": {\r\n \"login\": \"org\",\r\n \"id\": 69310803,\r\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/69310803?v=4\",\r\n \"gravatar_id\": \"\",\r\n \"url\": \"https://api.github.com/users/org\",\r\n \"html_url\": \"https://github.com/org\",\r\n \"followers_url\": \"https://api.github.com/users/org/followers\",\r\n \"following_url\": \"https://api.github.com/users/org/following{/other_user}\",\r\n \"gists_url\": \"https://api.github.com/users/org/gists{/gist_id}\",\r\n \"starred_url\": \"https://api.github.com/users/org/starred{/owner}{/repo}\",\r\n \"subscriptions_url\": \"https://api.github.com/users/orgt/subscriptions\",\r\n \"organizations_url\": \"https://api.github.com/users/org/orgs\",\r\n \"repos_url\": \"https://api.github.com/users/org/repos\",\r\n \"events_url\": \"https://api.github.com/users/org/events{/privacy}\",\r\n \"received_events_url\": \"https://api.github.com/users/org/received_events\",\r\n \"type\": \"Organization\",\r\n \"site_admin\": false\r\n }\r\n \"network_count\": 0,\r\n \"subscribers_count\": 0\r\n}\r\n```", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1549/reactions", + "total_count": 2, + "+1": 2, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1549/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1569", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1569/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1569/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1569/events", + "html_url": "https://github.com/hub4j/github-api/issues/1569", + "id": 1457757937, + "node_id": "I_kwDOAAlq-s5W457x", + "number": 1569, + "title": "GHHooks does not get all the hooks with pagination", + "user": { + "login": "sundergopalsingh", + "id": 8762655, + "node_id": "MDQ6VXNlcjg3NjI2NTU=", + "avatar_url": "https://avatars.githubusercontent.com/u/8762655?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sundergopalsingh", + "html_url": "https://github.com/sundergopalsingh", + "followers_url": "https://api.github.com/users/sundergopalsingh/followers", + "following_url": "https://api.github.com/users/sundergopalsingh/following{/other_user}", + "gists_url": "https://api.github.com/users/sundergopalsingh/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sundergopalsingh/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sundergopalsingh/subscriptions", + "organizations_url": "https://api.github.com/users/sundergopalsingh/orgs", + "repos_url": "https://api.github.com/users/sundergopalsingh/repos", + "events_url": "https://api.github.com/users/sundergopalsingh/events{/privacy}", + "received_events_url": "https://api.github.com/users/sundergopalsingh/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2022-11-21T11:14:16Z", + "updated_at": "2022-11-21T23:29:53Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**getHooks() does not get all the hooks and only gets the first page of the response**\r\nGHHooks getHooks() method does not get all the hooks when called and only retrieves the first page from the github call.\r\n\r\nhttps://github.com/hub4j/github-api/blob/github-api-1.115/src/main/java/org/kohsuke/github/GHHooks.java#L29\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behaviour:\r\n1. Create a repository with more than 30 webhooks , say 100\r\n2. Using Github api plugin call the getHooks() method on the above repository and you would realise that only first 30 hooks are being fetched.\r\n\r\n**Expected behavior**\r\ngetHooks() should return all the hooks available even if it has multiple pages or provide an option to paginate through the response.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: Linux\r\n - Version 1.115\r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1569/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1569/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1491", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1491/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1491/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1491/events", + "html_url": "https://github.com/hub4j/github-api/issues/1491", + "id": 1318769079, + "node_id": "I_kwDOAAlq-s5OmtG3", + "number": 1491, + "title": "Add `state_reason` for `GHIssue`", + "user": { + "login": "piotrooo", + "id": 2005054, + "node_id": "MDQ6VXNlcjIwMDUwNTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/2005054?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/piotrooo", + "html_url": "https://github.com/piotrooo", + "followers_url": "https://api.github.com/users/piotrooo/followers", + "following_url": "https://api.github.com/users/piotrooo/following{/other_user}", + "gists_url": "https://api.github.com/users/piotrooo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/piotrooo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/piotrooo/subscriptions", + "organizations_url": "https://api.github.com/users/piotrooo/orgs", + "repos_url": "https://api.github.com/users/piotrooo/repos", + "events_url": "https://api.github.com/users/piotrooo/events{/privacy}", + "received_events_url": "https://api.github.com/users/piotrooo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2022-07-26T21:25:47Z", + "updated_at": "2022-11-12T01:19:20Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "There is missing property `state_reason`, should be added with appropriate enum.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1491/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1491/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1545", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1545/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1545/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1545/events", + "html_url": "https://github.com/hub4j/github-api/issues/1545", + "id": 1407753565, + "node_id": "I_kwDOAAlq-s5T6J1d", + "number": 1545, + "title": "ghRepositoryStatistics.getCodeFrequency() always report a null pointer error", + "user": { + "login": "JasonWu0506", + "id": 104332592, + "node_id": "U_kgDOBjf9MA", + "avatar_url": "https://avatars.githubusercontent.com/u/104332592?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/JasonWu0506", + "html_url": "https://github.com/JasonWu0506", + "followers_url": "https://api.github.com/users/JasonWu0506/followers", + "following_url": "https://api.github.com/users/JasonWu0506/following{/other_user}", + "gists_url": "https://api.github.com/users/JasonWu0506/gists{/gist_id}", + "starred_url": "https://api.github.com/users/JasonWu0506/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/JasonWu0506/subscriptions", + "organizations_url": "https://api.github.com/users/JasonWu0506/orgs", + "repos_url": "https://api.github.com/users/JasonWu0506/repos", + "events_url": "https://api.github.com/users/JasonWu0506/events{/privacy}", + "received_events_url": "https://api.github.com/users/JasonWu0506/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2022-10-13T12:55:24Z", + "updated_at": "2022-10-21T18:54:30Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nA clear and concise description of what the bug is.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Go to '...'\r\n2. Click on '....'\r\n3. Scroll down to '....'\r\n4. See error\r\n```\r\n GitHub github = new GitHubBuilder().withOAuthToken(strOAuthToken).build();\r\n ghRepository = github.getUser(strOrg).getRepository(strRepo);\r\n \r\n \r\n GHRepositoryStatistics ghRepositoryStatistics = ghRepository.getStatistics();\r\n List codeFrequencies = ghRepositoryStatistics.getCodeFrequency();\r\n```\r\n\r\nResult:\r\n```\r\nException in thread \"main\" java.lang.NullPointerException\r\n\tat java.base/java.util.Objects.requireNonNull(Objects.java:208)\r\n\tat java.base/java.util.Arrays$ArrayList.(Arrays.java:4137)\r\n\tat java.base/java.util.Arrays.asList(Arrays.java:4122)\r\n\tat org.kohsuke.github.GHRepositoryStatistics.getCodeFrequency(GHRepositoryStatistics.java:319)\r\n```\r\n\r\n \r\n org.kohsuke \r\n github-api \r\n 1.313 \r\n \r\n\r\n**Expected behavior**\r\nA clear and concise description of what you expected to happen.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: [e.g. iOS]\r\n - Browser [e.g. chrome, safari]\r\n - Version [e.g. 22]\r\n\r\n**Additional context**\r\nAdd any other context about the problem here.\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1545/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1545/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + } + ] +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/6-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/6-search_issues.json new file mode 100644 index 0000000000..4011efaf38 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/6-search_issues.json @@ -0,0 +1,2709 @@ +{ + "total_count": 164, + "incomplete_results": false, + "items": [ + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1547", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1547/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1547/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1547/events", + "html_url": "https://github.com/hub4j/github-api/issues/1547", + "id": 1411783746, + "node_id": "I_kwDOAAlq-s5UJhxC", + "number": 1547, + "title": "Feature Request: expose shallow event data", + "user": { + "login": "devinrsmith", + "id": 6764691, + "node_id": "MDQ6VXNlcjY3NjQ2OTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/6764691?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/devinrsmith", + "html_url": "https://github.com/devinrsmith", + "followers_url": "https://api.github.com/users/devinrsmith/followers", + "following_url": "https://api.github.com/users/devinrsmith/following{/other_user}", + "gists_url": "https://api.github.com/users/devinrsmith/gists{/gist_id}", + "starred_url": "https://api.github.com/users/devinrsmith/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/devinrsmith/subscriptions", + "organizations_url": "https://api.github.com/users/devinrsmith/orgs", + "repos_url": "https://api.github.com/users/devinrsmith/repos", + "events_url": "https://api.github.com/users/devinrsmith/events{/privacy}", + "received_events_url": "https://api.github.com/users/devinrsmith/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": { + "login": "devinrsmith", + "id": 6764691, + "node_id": "MDQ6VXNlcjY3NjQ2OTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/6764691?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/devinrsmith", + "html_url": "https://github.com/devinrsmith", + "followers_url": "https://api.github.com/users/devinrsmith/followers", + "following_url": "https://api.github.com/users/devinrsmith/following{/other_user}", + "gists_url": "https://api.github.com/users/devinrsmith/gists{/gist_id}", + "starred_url": "https://api.github.com/users/devinrsmith/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/devinrsmith/subscriptions", + "organizations_url": "https://api.github.com/users/devinrsmith/orgs", + "repos_url": "https://api.github.com/users/devinrsmith/repos", + "events_url": "https://api.github.com/users/devinrsmith/events{/privacy}", + "received_events_url": "https://api.github.com/users/devinrsmith/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "assignees": [ + { + "login": "devinrsmith", + "id": 6764691, + "node_id": "MDQ6VXNlcjY3NjQ2OTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/6764691?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/devinrsmith", + "html_url": "https://github.com/devinrsmith", + "followers_url": "https://api.github.com/users/devinrsmith/followers", + "following_url": "https://api.github.com/users/devinrsmith/following{/other_user}", + "gists_url": "https://api.github.com/users/devinrsmith/gists{/gist_id}", + "starred_url": "https://api.github.com/users/devinrsmith/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/devinrsmith/subscriptions", + "organizations_url": "https://api.github.com/users/devinrsmith/orgs", + "repos_url": "https://api.github.com/users/devinrsmith/repos", + "events_url": "https://api.github.com/users/devinrsmith/events{/privacy}", + "received_events_url": "https://api.github.com/users/devinrsmith/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + } + ], + "milestone": null, + "comments": 1, + "created_at": "2022-10-17T15:26:34Z", + "updated_at": "2022-10-21T18:54:05Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "First time user at `github-api`...\r\n\r\nI'm interested in consuming the GH event API for organizations. I see that `org.kohsuke.github.GHOrganization#listEvents` returns `org.kohsuke.github.GHEventInfo`s.\r\n\r\nOf particular importance for my use case is minimizing API requests. I see some fields in `GHEventInfo` that are commented as \"shallow\"; I'm assuming this means they have been partially filled in via the GH event response? Is there any reason these shallow objects can't / shouldn't be exposed to the end user?\r\n\r\nI'm hoping all of the commons properties listed https://docs.github.com/en/developers/webhooks-and-events/events/github-event-types#event-object-common-properties can be accessible without additional API calls. It looks like the field `public` can be added as well?\r\n\r\nHappy to follow up with a PR if this sounds appropriate. Thanks!", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1547/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1547/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1520", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1520/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1520/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1520/events", + "html_url": "https://github.com/hub4j/github-api/issues/1520", + "id": 1361648807, + "node_id": "I_kwDOAAlq-s5RKRyn", + "number": 1520, + "title": "List check runs in a check suite", + "user": { + "login": "lppedd", + "id": 19871649, + "node_id": "MDQ6VXNlcjE5ODcxNjQ5", + "avatar_url": "https://avatars.githubusercontent.com/u/19871649?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/lppedd", + "html_url": "https://github.com/lppedd", + "followers_url": "https://api.github.com/users/lppedd/followers", + "following_url": "https://api.github.com/users/lppedd/following{/other_user}", + "gists_url": "https://api.github.com/users/lppedd/gists{/gist_id}", + "starred_url": "https://api.github.com/users/lppedd/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/lppedd/subscriptions", + "organizations_url": "https://api.github.com/users/lppedd/orgs", + "repos_url": "https://api.github.com/users/lppedd/repos", + "events_url": "https://api.github.com/users/lppedd/events{/privacy}", + "received_events_url": "https://api.github.com/users/lppedd/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2022-09-05T09:22:00Z", + "updated_at": "2022-10-21T18:23:54Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "As of now it doesn't seem possible to list check runs under a specific suite.\r\nThis is particularly useful when a user request an entire suite to be re-run.\r\nSee https://docs.github.com/en/rest/checks/runs#list-check-runs-in-a-check-suite\r\n\r\nIs there some workaround?", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1520/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1520/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1543", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1543/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1543/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1543/events", + "html_url": "https://github.com/hub4j/github-api/issues/1543", + "id": 1400158233, + "node_id": "I_kwDOAAlq-s5TdLgZ", + "number": 1543, + "title": "Should support `parent` team objects", + "user": { + "login": "Callek", + "id": 1415602, + "node_id": "MDQ6VXNlcjE0MTU2MDI=", + "avatar_url": "https://avatars.githubusercontent.com/u/1415602?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Callek", + "html_url": "https://github.com/Callek", + "followers_url": "https://api.github.com/users/Callek/followers", + "following_url": "https://api.github.com/users/Callek/following{/other_user}", + "gists_url": "https://api.github.com/users/Callek/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Callek/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Callek/subscriptions", + "organizations_url": "https://api.github.com/users/Callek/orgs", + "repos_url": "https://api.github.com/users/Callek/repos", + "events_url": "https://api.github.com/users/Callek/events{/privacy}", + "received_events_url": "https://api.github.com/users/Callek/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1686292366, + "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", + "name": "more information needed", + "color": "9ce1ed", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2022-10-06T18:54:09Z", + "updated_at": "2022-10-21T18:20:12Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "In `GHTeam` objects, there should be support exposing the result of the `parent` return from `/user/teams` .\r\n\r\nIdeally this would be another `GHTeam` object, and bonus points if `getMyTeams()` [1] supports fetching all parents as well (possibly with an arg for consumers to request that functionality).\r\n\r\nA clear and concise description of what the bug is.\r\n\r\n**Expected behavior**\r\nA clear and concise description of what you expected to happen.\r\n\r\n`.getMyTeams()` returns an `GHTeam` objects with references to their parent team.\r\nBonus: `.getMyTeams(True)` (or some such) gets not only my *direct* teams, but any parent teams I'm a part of.\r\n\r\n[1] - https://github.com/hub4j/github-api/blob/4bba9680706785d6385ed69243f41a5f36757463/src/main/java/org/kohsuke/github/GitHub.java#L870\r\n\r\n** Extra Context **\r\nThe lack of `parent` being exposed makes https://issues.jenkins.io/browse/JENKINS-63051 harder to solve.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1543/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1543/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1540", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1540/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1540/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1540/events", + "html_url": "https://github.com/hub4j/github-api/issues/1540", + "id": 1395378016, + "node_id": "I_kwDOAAlq-s5TK8dg", + "number": 1540, + "title": "Issue with GHRepositoryStatistics.getContibutorStats(true)", + "user": { + "login": "goldbal330", + "id": 62764301, + "node_id": "MDQ6VXNlcjYyNzY0MzAx", + "avatar_url": "https://avatars.githubusercontent.com/u/62764301?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/goldbal330", + "html_url": "https://github.com/goldbal330", + "followers_url": "https://api.github.com/users/goldbal330/followers", + "following_url": "https://api.github.com/users/goldbal330/following{/other_user}", + "gists_url": "https://api.github.com/users/goldbal330/gists{/gist_id}", + "starred_url": "https://api.github.com/users/goldbal330/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/goldbal330/subscriptions", + "organizations_url": "https://api.github.com/users/goldbal330/orgs", + "repos_url": "https://api.github.com/users/goldbal330/repos", + "events_url": "https://api.github.com/users/goldbal330/events{/privacy}", + "received_events_url": "https://api.github.com/users/goldbal330/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2022-10-03T21:49:18Z", + "updated_at": "2022-10-04T07:45:35Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "https://github.com/hub4j/github-api/blob/4bba9680706785d6385ed69243f41a5f36757463/src/main/java/org/kohsuke/github/GHRepositoryStatistics.java#L67\r\n\r\nThis method will never invoke Thread.sleep if the data is not ready.\r\n\r\n ```\nif (stats == null && waitTillReady) {\r\n for (int i = 0; i < MAX_WAIT_ITERATIONS; i += 1) {\r\n // Wait a few seconds and try again.\r\n Thread.sleep(WAIT_SLEEP_INTERVAL);\r\n stats = getContributorStatsImpl();\r\n if (stats != null) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\nstats = getContributorStatsImpl() will never return null.\r\n```\n\r\nhttps://github.com/hub4j/github-api/blob/4bba9680706785d6385ed69243f41a5f36757463/src/main/java/org/kohsuke/github/Requester.java#L169\r\n\r\nwill always create a new instance of GitHubPageContentsIterable.\r\nHence, if the data is still being cached by the server, the blocking will never happen and empty result will be returned back.\r\n\r\n**Expected behavior**\r\nBased on GitHub API documentation: https://docs.github.com/en/rest/metrics/statistics#a-word-about-caching code 202 is returned back when the statistics data is not ready. Ideally status code of 202 returned by the REST call would be driving sleep and retry in GHRepositoryStatistics class. If the data is not ready, the method would block till the data is ready and return then.\r\n\r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1540/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1540/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/423", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/423/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/423/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/423/events", + "html_url": "https://github.com/hub4j/github-api/issues/423", + "id": 302121839, + "node_id": "MDU6SXNzdWUzMDIxMjE4Mzk=", + "number": 423, + "title": "Upgrade documentation and supply examples", + "user": { + "login": "adam-arold", + "id": 1253248, + "node_id": "MDQ6VXNlcjEyNTMyNDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/1253248?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/adam-arold", + "html_url": "https://github.com/adam-arold", + "followers_url": "https://api.github.com/users/adam-arold/followers", + "following_url": "https://api.github.com/users/adam-arold/following{/other_user}", + "gists_url": "https://api.github.com/users/adam-arold/gists{/gist_id}", + "starred_url": "https://api.github.com/users/adam-arold/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/adam-arold/subscriptions", + "organizations_url": "https://api.github.com/users/adam-arold/orgs", + "repos_url": "https://api.github.com/users/adam-arold/repos", + "events_url": "https://api.github.com/users/adam-arold/events{/privacy}", + "received_events_url": "https://api.github.com/users/adam-arold/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 2070644911, + "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", + "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", + "name": "documentation", + "color": "6ee5cb", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2018-03-04T21:03:09Z", + "updated_at": "2022-09-30T15:03:33Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "The documentation of this library is **extremely lacking**. There are no examples for even the simplest case of OAuth-based authentication for a GitHub app. The javadoc is basically non-existent. I can't figure out for example how can I use a `client_id` and `client_secret` for authentication.\r\n\r\nPlease improve this!", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/423/reactions", + "total_count": 7, + "+1": 7, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/423/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1532", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1532/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1532/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1532/events", + "html_url": "https://github.com/hub4j/github-api/issues/1532", + "id": 1389612266, + "node_id": "I_kwDOAAlq-s5S08zq", + "number": 1532, + "title": "GHMyself fails with Github enterprise", + "user": { + "login": "familrodrigues", + "id": 96345373, + "node_id": "U_kgDOBb4dHQ", + "avatar_url": "https://avatars.githubusercontent.com/u/96345373?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/familrodrigues", + "html_url": "https://github.com/familrodrigues", + "followers_url": "https://api.github.com/users/familrodrigues/followers", + "following_url": "https://api.github.com/users/familrodrigues/following{/other_user}", + "gists_url": "https://api.github.com/users/familrodrigues/gists{/gist_id}", + "starred_url": "https://api.github.com/users/familrodrigues/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/familrodrigues/subscriptions", + "organizations_url": "https://api.github.com/users/familrodrigues/orgs", + "repos_url": "https://api.github.com/users/familrodrigues/repos", + "events_url": "https://api.github.com/users/familrodrigues/events{/privacy}", + "received_events_url": "https://api.github.com/users/familrodrigues/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1686292366, + "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", + "name": "more information needed", + "color": "9ce1ed", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2022-09-28T16:05:35Z", + "updated_at": "2022-09-29T07:53:26Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Trying to connect to Github enterprise with User name & PAT token. GHMyself throws a 401 unauthorized error\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\n\r\n```\nGitHub github = GitHub.connectToEnterpriseWithOAuth(gitURL, aUsername, aPassword);\r\nGHMyself aUser = github.getMyself();\r\n```\n\r\nIssue seems to be in GHMyself u = retrieve().to(\"/user\", GHMyself.class);\n Expects the token as part of this API call\r\n\r\n\r\n**Expected behavior**\r\nWould need GHmyself to be successfully populated.\r\n\r\n**Additional context**\r\nConnect to Git hub enterprise with PAT token. The same code works fine with Github, ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1532/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1532/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1507", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1507/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1507/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1507/events", + "html_url": "https://github.com/hub4j/github-api/issues/1507", + "id": 1350549876, + "node_id": "I_kwDOAAlq-s5Qf8F0", + "number": 1507, + "title": "PagedSearchIterable returns a subset of the searched results and has non-deterministic behaviour.", + "user": { + "login": "tassiluca", + "id": 39587905, + "node_id": "MDQ6VXNlcjM5NTg3OTA1", + "avatar_url": "https://avatars.githubusercontent.com/u/39587905?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/tassiluca", + "html_url": "https://github.com/tassiluca", + "followers_url": "https://api.github.com/users/tassiluca/followers", + "following_url": "https://api.github.com/users/tassiluca/following{/other_user}", + "gists_url": "https://api.github.com/users/tassiluca/gists{/gist_id}", + "starred_url": "https://api.github.com/users/tassiluca/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/tassiluca/subscriptions", + "organizations_url": "https://api.github.com/users/tassiluca/orgs", + "repos_url": "https://api.github.com/users/tassiluca/repos", + "events_url": "https://api.github.com/users/tassiluca/events{/privacy}", + "received_events_url": "https://api.github.com/users/tassiluca/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1686292366, + "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", + "name": "more information needed", + "color": "9ce1ed", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2022-08-25T08:44:37Z", + "updated_at": "2022-09-02T06:14:57Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nSearching for repositories and getting the results via the `PagedSearchIterable` returns a subset of the results with duplicate `GHRepository` objects and has non-deterministic behavior.\r\n\r\n**To Reproduce**\r\nThe problem is reproducible with the following JUnit tests. \r\n```Java\r\nmatchingRepos = github.searchRepositories()\r\n .user(\"DanySK\")\r\n .fork(GHFork.PARENT_AND_FORKS)\r\n .q(\"Student-Project-OOP\")\r\n .list();\r\n``` \r\n```Java\r\n@Test\r\npublic void testDuplicates() throws IOException {\r\n assertEquals(matchingRepos.toList().size(), matchingRepos.toSet().size());\r\n}\r\n\r\n@Test\r\npublic void testDeterminism() throws IOException {\r\n var set1 = matchingRepos.toSet();\r\n var set2 = matchingRepos.toSet();\r\n assertEquals(set1, set2);\r\n}\r\n```\r\n\r\n**Expected behavior**\r\nThe list of `GHRepository` returned by `PagedSearchIterable` should contains all the expected results.\r\n\r\n**Desktop:**\r\n - OS: [MacOS]\r\n - Browser [firefox]\r\n - Version [1.308]\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1507/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1507/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1497", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1497/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1497/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1497/events", + "html_url": "https://github.com/hub4j/github-api/issues/1497", + "id": 1325595081, + "node_id": "I_kwDOAAlq-s5PAvnJ", + "number": 1497, + "title": "GHUser even when event comes from Organization type", + "user": { + "login": "Jalmeida1994", + "id": 26606265, + "node_id": "MDQ6VXNlcjI2NjA2MjY1", + "avatar_url": "https://avatars.githubusercontent.com/u/26606265?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Jalmeida1994", + "html_url": "https://github.com/Jalmeida1994", + "followers_url": "https://api.github.com/users/Jalmeida1994/followers", + "following_url": "https://api.github.com/users/Jalmeida1994/following{/other_user}", + "gists_url": "https://api.github.com/users/Jalmeida1994/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Jalmeida1994/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Jalmeida1994/subscriptions", + "organizations_url": "https://api.github.com/users/Jalmeida1994/orgs", + "repos_url": "https://api.github.com/users/Jalmeida1994/repos", + "events_url": "https://api.github.com/users/Jalmeida1994/events{/privacy}", + "received_events_url": "https://api.github.com/users/Jalmeida1994/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2022-08-02T09:48:15Z", + "updated_at": "2022-08-16T08:02:26Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nA `GHUser` type is returned even when in the payload the account type is `Organization`.\r\n\r\nMore precisely in the event `installation.created` when the `installation.account.type` is set to `Organization` (app installed in organization) the `installation.account` in the `@Installation.Created` payload returns a `GHUser`.\r\n\r\n```yaml\r\n{\r\n \"action\": \"created\",\r\n \"installation\": {\r\n \"id\": 12345,\r\n \"account\": {\r\n \"login\": \"org-name\",\r\n <...>\r\n \"type\": \"Organization\",\r\n \"site_admin\": false\r\n },\r\n<...>\r\n```\r\n\r\n```kotlin\r\nfun onInstall(@Installation.Created installationPayload: GHEventPayload.Installation) {\r\n val tenantGHOrganization = installationPayload.installation.account // <-- GHUser instance\r\n}\r\n```\r\n\r\nAlso tried to use the `installationPayload.organization` object but it always returned null (probably it's used in other events):\r\n\r\n```kotlin\r\nfun onInstall(@Installation.Created installationPayload: GHEventPayload.Installation) {\r\n LOG.info(\"org: \" + installationPayload.organization.name) // <-- Cannot invoke \"org.kohsuke.github.GHOrganization.getName()\" because the return value of \"org.kohsuke.github.GHEventPayload$Installation.getOrganization()\" is null\r\n}\r\n```\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Create an event with `installation.created` in an organization (install app in an organization)\r\n2. Catch the event\r\n3. Retrieve the `installationPayload.installation.account` object\r\n4. Or retrieve the `installationPayload.organization` object\r\n\r\n**Expected behavior**\r\nIf the payload has the `installation.account.type` set to `Organization` the `installationPayload.installation.account`should return a GHOrganization object or the `installationPayload.organization` should not return null.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: macOS Monterey v12.4 (Apple M1)\r\n\r\n**Additional context**\r\nUsing Kotlin and [Quarkus GitHub App](https://github.com/quarkiverse/quarkus-github-app)\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1497/reactions", + "total_count": 2, + "+1": 2, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1497/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1468", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1468/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1468/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1468/events", + "html_url": "https://github.com/hub4j/github-api/issues/1468", + "id": 1257088797, + "node_id": "I_kwDOAAlq-s5K7acd", + "number": 1468, + "title": "Adding support for rerequesting check-suites/check runs", + "user": { + "login": "xocasdashdash", + "id": 6722159, + "node_id": "MDQ6VXNlcjY3MjIxNTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/6722159?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xocasdashdash", + "html_url": "https://github.com/xocasdashdash", + "followers_url": "https://api.github.com/users/xocasdashdash/followers", + "following_url": "https://api.github.com/users/xocasdashdash/following{/other_user}", + "gists_url": "https://api.github.com/users/xocasdashdash/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xocasdashdash/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xocasdashdash/subscriptions", + "organizations_url": "https://api.github.com/users/xocasdashdash/orgs", + "repos_url": "https://api.github.com/users/xocasdashdash/repos", + "events_url": "https://api.github.com/users/xocasdashdash/events{/privacy}", + "received_events_url": "https://api.github.com/users/xocasdashdash/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2022-06-01T21:31:58Z", + "updated_at": "2022-08-08T16:41:52Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "So for a project i want to be able to rerun a checksuite that another app already configured (something like travis/jenkins app). \r\n\r\nI see that github's API supports this: \r\n\r\n- https://docs.github.com/en/rest/checks/runs#rerequest-a-check-run\r\n- https://docs.github.com/en/rest/checks/suites#rerequest-a-check-suite\r\n\r\nBut i haven't been able to find how to do that with this library. Is this supported? I'd love to add these two calls (seems like it should be a couple of POST requests) but I might struggle with testing. Is there any example of adding support for something like this? \r\n\r\nLet me know if I missed something and this is actually possible with this library, I've checked on the GHCheckSuite and GHCheckRun classes", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1468/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1468/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1471", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1471/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1471/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1471/events", + "html_url": "https://github.com/hub4j/github-api/issues/1471", + "id": 1270012702, + "node_id": "I_kwDOAAlq-s5Lstse", + "number": 1471, + "title": "Could not fetch branches from source ", + "user": { + "login": "noellowry", + "id": 19227294, + "node_id": "MDQ6VXNlcjE5MjI3Mjk0", + "avatar_url": "https://avatars.githubusercontent.com/u/19227294?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/noellowry", + "html_url": "https://github.com/noellowry", + "followers_url": "https://api.github.com/users/noellowry/followers", + "following_url": "https://api.github.com/users/noellowry/following{/other_user}", + "gists_url": "https://api.github.com/users/noellowry/gists{/gist_id}", + "starred_url": "https://api.github.com/users/noellowry/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/noellowry/subscriptions", + "organizations_url": "https://api.github.com/users/noellowry/orgs", + "repos_url": "https://api.github.com/users/noellowry/repos", + "events_url": "https://api.github.com/users/noellowry/events{/privacy}", + "received_events_url": "https://api.github.com/users/noellowry/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1686290078, + "node_id": "MDU6TGFiZWwxNjg2MjkwMDc4", + "url": "https://api.github.com/repos/hub4j/github-api/labels/external", + "name": "external", + "color": "a0a0a0", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2022-06-13T22:10:34Z", + "updated_at": "2022-06-22T02:52:51Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nScan Repository Now fails branch\r\n```\r\nChecking branch [release/v1.9.0.0](repo-name/branch-name)\r\n ‘jenkins/Jenkinsfile.selenium’ found\r\n Met criteria\r\nERROR: [Mon Jun 13 22:05:43 UTC 2022] Could not fetch branches from source a4e4fa47-7b9a-49de-a5b8-56e68cfb2e08\r\n[Mon Jun 13 22:05:43 UTC 2022] Finished branch indexing. Indexing took 1 min 17 sec\r\nFATAL: Failed to recompute children of resilient-selenium\r\njava.lang.IllegalStateException: JENKINS-42511: attempted to redundantly create release%2Fv1.9.0.0 in org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject@17a57a09[resilient-selenium]\r\n\tat jenkins.branch.MultiBranchProject$SCMHeadObserverImpl.observeNew(MultiBranchProject.java:2055)\r\n\tat jenkins.branch.MultiBranchProject$SCMHeadObserverImpl.observe(MultiBranchProject.java:1990)\r\n\tat jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:357)\r\n\tat jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:249)\r\n\tat org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:1055)\r\n\tat jenkins.scm.api.SCMSource._retrieve(SCMSource.java:373)\r\n\tat jenkins.scm.api.SCMSource.fetch(SCMSource.java:283)\r\n\tat jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:641)\r\n\tat com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:278)\r\n\tat com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:166)\r\n\tat jenkins.branch.MultiBranchProject$BranchIndexing.run(MultiBranchProject.java:1032)\r\n\tat hudson.model.ResourceController.execute(ResourceController.java:101)\r\n\tat hudson.model.Executor.run(Executor.java:442)\r\nFinished: FAILURE\r\n```\r\nDeleted the cache in `$JENKINS_HOME/org.jenkinsci.plugins.github_branch_source.GitHubSCMProbe.cache/*`\r\nbut the issue still persists\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n\r\n1. Click on 'Scan Repository Now'\r\n2. Go to 'Scan Repository Log'\r\n3. See error\r\n\r\n**Expected behavior**\r\nRepository to be scanned successfully\r\nNot sure if the %2F in branch name is causing issues? Though it worked for a similarly named branch\r\nBranch name is release/v1.9.0.0\r\n`java.lang.IllegalStateException: JENKINS-42511: attempted to redundantly create release%2Fv1.9.0.0 in org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject@17a57a09[resilient-selenium]`", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1471/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1471/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/937", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/937/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/937/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/937/events", + "html_url": "https://github.com/hub4j/github-api/issues/937", + "id": 686155949, + "node_id": "MDU6SXNzdWU2ODYxNTU5NDk=", + "number": 937, + "title": "Adding public key to user", + "user": { + "login": "vmax", + "id": 499267, + "node_id": "MDQ6VXNlcjQ5OTI2Nw==", + "avatar_url": "https://avatars.githubusercontent.com/u/499267?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vmax", + "html_url": "https://github.com/vmax", + "followers_url": "https://api.github.com/users/vmax/followers", + "following_url": "https://api.github.com/users/vmax/following{/other_user}", + "gists_url": "https://api.github.com/users/vmax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vmax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vmax/subscriptions", + "organizations_url": "https://api.github.com/users/vmax/orgs", + "repos_url": "https://api.github.com/users/vmax/repos", + "events_url": "https://api.github.com/users/vmax/events{/privacy}", + "received_events_url": "https://api.github.com/users/vmax/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2020-08-26T09:15:37Z", + "updated_at": "2022-06-02T10:45:59Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\n\r\nIt currently seems to be impossible to add a new public key to user's account using `GHMyself`. [`POST /user/keys`](https://developer.github.com/v3/users/keys/#create-a-public-ssh-key-for-the-authenticated-user) is the relevant GitHub API endpoint.\r\n\r\n**To Reproduce**\r\nRead docs on `GHMyself` and observe the method not being present\r\n\r\n**Expected behavior**\r\n`GHMyself::addKey` to be available, with an interface similar to `GHRepository::addDeployKey`\r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/937/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/937/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1267", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1267/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1267/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1267/events", + "html_url": "https://github.com/hub4j/github-api/issues/1267", + "id": 1031601401, + "node_id": "I_kwDOAAlq-s49fPz5", + "number": 1267, + "title": "GHFileNotFoundException is thrown for any HTTP 4xx or 5xx error", + "user": { + "login": "Typraeurion", + "id": 36168707, + "node_id": "MDQ6VXNlcjM2MTY4NzA3", + "avatar_url": "https://avatars.githubusercontent.com/u/36168707?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Typraeurion", + "html_url": "https://github.com/Typraeurion", + "followers_url": "https://api.github.com/users/Typraeurion/followers", + "following_url": "https://api.github.com/users/Typraeurion/following{/other_user}", + "gists_url": "https://api.github.com/users/Typraeurion/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Typraeurion/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Typraeurion/subscriptions", + "organizations_url": "https://api.github.com/users/Typraeurion/orgs", + "repos_url": "https://api.github.com/users/Typraeurion/repos", + "events_url": "https://api.github.com/users/Typraeurion/events{/privacy}", + "received_events_url": "https://api.github.com/users/Typraeurion/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2021-10-20T16:23:20Z", + "updated_at": "2022-05-24T20:00:57Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nObsoleteUrlFactory.getInputStream() throws FileNotFoundException regardless of the type of client-side or server-side error response from an HTTP request. GitHubClient.interpretApiError(IOException, GitHubRequest, ResponseInfo) then _assumes_ this exception is due to a 404 response and wraps that exception in a GHFileNotFoundException. This makes in impossible for the caller to distinguish what kind of error we’re dealing with. In the particular case I’m troubleshooting right now, it’s an expired auth token which _should_ cause the application to delete its session cookie and redirect the user to the auth flow; instead it’s showing the user a 500 Internal Server Error because it doesn’t know how to handle this exception.\r\n\r\nThe getInputStream code is:\r\n```\r\n Response response = getResponse(false);\r\n if (response.code() >= HTTP_BAD_REQUEST)\r\n throw new FileNotFoundException(url.toString());\r\n return new ResponseBodyInputStream(response.body());\r\n```\r\nThe offending code in interpretApiError is:\r\n```\r\n if (errorMessage != null) {\r\n if (e instanceof FileNotFoundException) { // MISTAKEN ASSUMPTION HERE!\r\n // pass through 404 Not Found to allow the caller to handle it intelligently\r\n e = new GHFileNotFoundException(e.getMessage() + \" \" + errorMessage, e)\r\n .withResponseHeaderFields(headers);\r\n } else if (statusCode >= 0) {\r\n e = new HttpException(errorMessage, statusCode, message, request.url().toString(), e);\r\n } else {\r\n e = new GHIOException(errorMessage).withResponseHeaderFields(headers);\r\n }\r\n } else if (!(e instanceof FileNotFoundException)) {\r\n e = new HttpException(statusCode, message, request.url().toString(), e);\r\n }\r\n return e;\r\n```\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Set `authToken` to an old authentication token (e.g. one obtained yesterday)\r\n2.\r\n```\r\n GitHub connection = new GitHubBuilder()\r\n .withConnector(new OkHttpConnector(new OkHttpClient.Builder().build()))\r\n .withOAuthToken(authToken)\r\n .build();\r\n GHMyself me = connection.getMyself();\r\n```\r\n\r\n**Expected behavior**\r\nThe call should throw GHFileNotFoundException only `if (statusCode == 404)`; it should throw HttpException `if (statusCode >= 400)` and throw GHIOException in any other case. _(Status codes 2xx or 3xx should not be throwing exceptions.)_\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: MacOS 11.4\r\n - Browser: Chrome 94.0.4606.81\r\n - Version: 1.133\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1267/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1267/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1232", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1232/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1232/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1232/events", + "html_url": "https://github.com/hub4j/github-api/issues/1232", + "id": 1002874718, + "node_id": "I_kwDOAAlq-s47xqde", + "number": 1232, + "title": "open your objects for extension", + "user": { + "login": "tynutsu", + "id": 5890846, + "node_id": "MDQ6VXNlcjU4OTA4NDY=", + "avatar_url": "https://avatars.githubusercontent.com/u/5890846?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/tynutsu", + "html_url": "https://github.com/tynutsu", + "followers_url": "https://api.github.com/users/tynutsu/followers", + "following_url": "https://api.github.com/users/tynutsu/following{/other_user}", + "gists_url": "https://api.github.com/users/tynutsu/gists{/gist_id}", + "starred_url": "https://api.github.com/users/tynutsu/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/tynutsu/subscriptions", + "organizations_url": "https://api.github.com/users/tynutsu/orgs", + "repos_url": "https://api.github.com/users/tynutsu/repos", + "events_url": "https://api.github.com/users/tynutsu/events{/privacy}", + "received_events_url": "https://api.github.com/users/tynutsu/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + }, + { + "id": 1780165359, + "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", + "name": "breaking change", + "color": "b60205", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 7, + "created_at": "2021-09-21T17:00:52Z", + "updated_at": "2022-05-24T19:35:09Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "this is a very weird model which has business logic coupled with pojo, setters should not actually perform the github rest calls, instead a dedicated service should do that.\r\n\r\nwhile i understand is a lot work to re-model, what you could do at least is to allow the classes in the library to be further extended, so they should not be sealed or marked as final.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1232/reactions", + "total_count": 2, + "+1": 2, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1232/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1404", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1404/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1404/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1404/events", + "html_url": "https://github.com/hub4j/github-api/issues/1404", + "id": 1169422956, + "node_id": "I_kwDOAAlq-s5Fs_ps", + "number": 1404, + "title": "GitHub App Webhook Deliveries support", + "user": { + "login": "Georgeforman3", + "id": 100565446, + "node_id": "U_kgDOBf6Bxg", + "avatar_url": "https://avatars.githubusercontent.com/u/100565446?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Georgeforman3", + "html_url": "https://github.com/Georgeforman3", + "followers_url": "https://api.github.com/users/Georgeforman3/followers", + "following_url": "https://api.github.com/users/Georgeforman3/following{/other_user}", + "gists_url": "https://api.github.com/users/Georgeforman3/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Georgeforman3/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Georgeforman3/subscriptions", + "organizations_url": "https://api.github.com/users/Georgeforman3/orgs", + "repos_url": "https://api.github.com/users/Georgeforman3/repos", + "events_url": "https://api.github.com/users/Georgeforman3/events{/privacy}", + "received_events_url": "https://api.github.com/users/Georgeforman3/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2022-03-15T09:46:38Z", + "updated_at": "2022-04-05T15:50:16Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Is there any way to list webhook deliveries for the webhook configured for a GitHub App?\r\nhttps://docs.github.com/en/enterprise-cloud@latest/rest/reference/apps#list-deliveries-for-an-app-webhook\r\n\r\nOr to redeliver a delivery?\r\nhttps://docs.github.com/en/enterprise-cloud@latest/rest/reference/apps#redeliver-a-delivery-for-an-app-webhook\r\n\r\nThanks.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1404/reactions", + "total_count": 2, + "+1": 2, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1404/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1016", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1016/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1016/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1016/events", + "html_url": "https://github.com/hub4j/github-api/issues/1016", + "id": 781715355, + "node_id": "MDU6SXNzdWU3ODE3MTUzNTU=", + "number": 1016, + "title": "Add check that verifies public or protected methods do not take private or internal parameters", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2021-01-07T23:36:32Z", + "updated_at": "2022-03-07T19:29:46Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "#1015 fixed an issue where a `public` annotation had a `public` constructor that had a [`package-private`](https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html) `enum` parameter. This didn't break immediately, but caused issue for mocking. If it were a more generally used method, that method would be visible but not callable. \r\n\r\nWe should add an ArchUnit tests that: \r\n* find all public methods and verifies that all parameters of those method are also public\r\n* find all protected methods and verify that all parameters of those method are also at least protected - might be harder to write this test\r\n* find all public classes and verify they extend public classes - this may or may not be strictly required, but it makes for better testing and clarity.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1016/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1016/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1356", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1356/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1356/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1356/events", + "html_url": "https://github.com/hub4j/github-api/issues/1356", + "id": 1107805161, + "node_id": "I_kwDOAAlq-s5CB8Pp", + "number": 1356, + "title": "OkHttpGitHubConnector constructor seems to override OkHttpClient variables/settings", + "user": { + "login": "willemevenwel", + "id": 13721310, + "node_id": "MDQ6VXNlcjEzNzIxMzEw", + "avatar_url": "https://avatars.githubusercontent.com/u/13721310?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/willemevenwel", + "html_url": "https://github.com/willemevenwel", + "followers_url": "https://api.github.com/users/willemevenwel/followers", + "following_url": "https://api.github.com/users/willemevenwel/following{/other_user}", + "gists_url": "https://api.github.com/users/willemevenwel/gists{/gist_id}", + "starred_url": "https://api.github.com/users/willemevenwel/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/willemevenwel/subscriptions", + "organizations_url": "https://api.github.com/users/willemevenwel/orgs", + "repos_url": "https://api.github.com/users/willemevenwel/repos", + "events_url": "https://api.github.com/users/willemevenwel/events{/privacy}", + "received_events_url": "https://api.github.com/users/willemevenwel/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1686292366, + "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", + "name": "more information needed", + "color": "9ce1ed", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2022-01-19T08:33:59Z", + "updated_at": "2022-03-07T19:24:42Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "OkHttpGitHubConnector constructor seems to override OkHttpClient variables/settings. I explain.\r\n\r\nI am developing behind a corporate proxy. So while I run my code locally, I need to have my OkHttpClient initialized/built with proxy configurations. Like this:\r\n\r\n OkHttpClient client = new OkHttpClient.Builder()\r\n .connectTimeout(15, TimeUnit.SECONDS)\r\n .writeTimeout(15, TimeUnit.SECONDS)\r\n .readTimeout(15, TimeUnit.SECONDS)\r\n .proxy(proxy)\r\n .proxyAuthenticator(proxyAuthenticator)\r\n .build();\r\n\r\nBefore you make the point, I have tested a simple GET with this OkHttpClient instance, with success:\r\n\r\n Request request = new Request.Builder()\r\n .url(\"https://api.github.com\")\r\n .build();\r\n\r\nWhen initializing my GitHub instance I do the following:\r\n\r\n GitHubBuilder builder = new GitHubBuilder().withConnector(new OkHttpGitHubConnector(client));\r\n GitHub github = builder.withAppInstallationToken(githubapitoken).build();\r\n\r\nWhere the above _client_ which is used is the one initialized with the proxy. \r\n\r\nThe assumption is that the GitHub builder will honour this _client_ when any http requests are made. \r\n\r\nHowever when looking into the OkHttpGitHubConnector constructor, it seems a **new** OkHttpClient is built by calling newBuilder(). Here is the code which I inspected:\r\n\r\n public OkHttpGitHubConnector(OkHttpClient client, int cacheMaxAge) {\r\n **Builder builder = client.newBuilder();**\r\n builder.connectionSpecs(this.TlsConnectionSpecs());\r\n this.client = builder.build();\r\n if (cacheMaxAge >= 0 && this.client != null && this.client.cache() != null) {\r\n this.maxAgeHeaderValue = (new okhttp3.CacheControl.Builder()).maxAge(cacheMaxAge, TimeUnit.SECONDS).build().toString();\r\n } else {\r\n this.maxAgeHeaderValue = null;\r\n }\r\n\r\n }\r\n\r\nMy assumption is then that .newBuilder() overrides any existing settings/properties set for this OkHttpClient.\r\n\r\nAny help would be aprpeciated.\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1356/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1356/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1375", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1375/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1375/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1375/events", + "html_url": "https://github.com/hub4j/github-api/issues/1375", + "id": 1138182131, + "node_id": "I_kwDOAAlq-s5D10fz", + "number": 1375, + "title": "Webhook payloads and Event payloads should not be represented by the same classes", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1780165359, + "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", + "name": "breaking change", + "color": "b60205", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2022-02-15T04:55:32Z", + "updated_at": "2022-02-15T04:56:52Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Webhooks and events contain similar data but often not the same data. The Push event is one example: \r\nhttps://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#push\r\nhttps://docs.github.com/en/developers/webhooks-and-events/events/github-event-types#pushevent\r\n\r\nThere's a lot of overlap, but having the two represented by the same data objects is misleading. \r\nSee #1374 for an example of the confusion this causes.\r\n\r\nWe should be returning different classes for these two. ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1375/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1375/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1373", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1373/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1373/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1373/events", + "html_url": "https://github.com/hub4j/github-api/issues/1373", + "id": 1127032832, + "node_id": "I_kwDOAAlq-s5DLSgA", + "number": 1373, + "title": "Api support required for checking the authorization for Github OAuth token after previous api has been deprecated", + "user": { + "login": "sundergopalsingh", + "id": 8762655, + "node_id": "MDQ6VXNlcjg3NjI2NTU=", + "avatar_url": "https://avatars.githubusercontent.com/u/8762655?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sundergopalsingh", + "html_url": "https://github.com/sundergopalsingh", + "followers_url": "https://api.github.com/users/sundergopalsingh/followers", + "following_url": "https://api.github.com/users/sundergopalsingh/following{/other_user}", + "gists_url": "https://api.github.com/users/sundergopalsingh/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sundergopalsingh/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sundergopalsingh/subscriptions", + "organizations_url": "https://api.github.com/users/sundergopalsingh/orgs", + "repos_url": "https://api.github.com/users/sundergopalsingh/repos", + "events_url": "https://api.github.com/users/sundergopalsingh/events{/privacy}", + "received_events_url": "https://api.github.com/users/sundergopalsingh/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2022-02-08T10:00:12Z", + "updated_at": "2022-02-14T22:22:46Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nGithub has deprecated previous REST api that was used to check the authorization of OAuth token as per https://docs.github.com/en/enterprise-server@3.3/rest/reference/oauth-authorizations#check-an-authorization and blog post https://developer.github.com/changes/2020-02-14-deprecating-oauth-app-endpoint/ \r\n\r\nIn this repository we are using the deprecated api :-\r\nhttps://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GitHub.java#L1106 and there is no support for the new APIs mentioned as per blog. So we would need support for new APIs to be added in order to check for a token authorization part as well as for the other areas which has been effected by the deprecation of the authorization APIs.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Create an OAuth token \r\n2. Try to validate the token using checkAuth Method https://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GitHub.java#L1105 with valid clientId and accessToken created previously.\r\n3. It returns 404\r\n\r\n**Expected behavior**\r\ncheckAuth method or any other method added should not return 404 for a valid token and should return the proper GHAuthorization object.\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1373/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1373/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1357", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1357/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1357/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1357/events", + "html_url": "https://github.com/hub4j/github-api/issues/1357", + "id": 1110166715, + "node_id": "I_kwDOAAlq-s5CK8y7", + "number": 1357, + "title": "Exception on renaming label - `done()` should only be callable once for Setter or Updater", + "user": { + "login": "danhallin", + "id": 1741571, + "node_id": "MDQ6VXNlcjE3NDE1NzE=", + "avatar_url": "https://avatars.githubusercontent.com/u/1741571?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/danhallin", + "html_url": "https://github.com/danhallin", + "followers_url": "https://api.github.com/users/danhallin/followers", + "following_url": "https://api.github.com/users/danhallin/following{/other_user}", + "gists_url": "https://api.github.com/users/danhallin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/danhallin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/danhallin/subscriptions", + "organizations_url": "https://api.github.com/users/danhallin/orgs", + "repos_url": "https://api.github.com/users/danhallin/repos", + "events_url": "https://api.github.com/users/danhallin/events{/privacy}", + "received_events_url": "https://api.github.com/users/danhallin/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2022-01-21T08:00:45Z", + "updated_at": "2022-01-29T06:40:30Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nThrowing error when renaming label, the renaming does take place.\r\n\r\norg.kohsuke.github.GHFileNotFoundException: https://api.github.com/repos/org/repo/labels/oldname {\"message\":\"Not Found\",\"documentation_url\":\"https://docs.github.com/rest/reference/issues#update-a-label\"}\r\n\tat org.kohsuke.github.GitHubClient.interpretApiError(GitHubClient.java:540)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:401)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:355)\r\n\tat org.kohsuke.github.Requester.fetch(Requester.java:76)\r\n\tat org.kohsuke.github.AbstractBuilder.done(AbstractBuilder.java:109)\r\n\tat org.kohsuke.github.GHLabel$Setter.done(GHLabel.java:258)\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n```\r\nGHLabel ghLabel = ghLabelWithOldName;\r\nGHLabel.Setter setter = ghLabel.set();\r\nsetter.name(newname);\r\nghLabel = setter.done();\r\n```\r\n\r\n**Expected behavior**\r\nNew label should be returned by .done()\r\n\r\n**Additional context**\r\nVersion 1.301\r\nLikely caused from attempting to re-fetch label data with the old name which was just replaced and is no longer available.\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1357/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1357/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1330", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1330/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1330/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1330/events", + "html_url": "https://github.com/hub4j/github-api/issues/1330", + "id": 1067671913, + "node_id": "I_kwDOAAlq-s4_o2Fp", + "number": 1330, + "title": "Query runs for a workflow", + "user": { + "login": "Typraeurion", + "id": 36168707, + "node_id": "MDQ6VXNlcjM2MTY4NzA3", + "avatar_url": "https://avatars.githubusercontent.com/u/36168707?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Typraeurion", + "html_url": "https://github.com/Typraeurion", + "followers_url": "https://api.github.com/users/Typraeurion/followers", + "following_url": "https://api.github.com/users/Typraeurion/following{/other_user}", + "gists_url": "https://api.github.com/users/Typraeurion/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Typraeurion/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Typraeurion/subscriptions", + "organizations_url": "https://api.github.com/users/Typraeurion/orgs", + "repos_url": "https://api.github.com/users/Typraeurion/repos", + "events_url": "https://api.github.com/users/Typraeurion/events{/privacy}", + "received_events_url": "https://api.github.com/users/Typraeurion/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1686292366, + "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", + "name": "more information needed", + "color": "9ce1ed", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2021-11-30T21:01:57Z", + "updated_at": "2021-12-13T22:11:42Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nThis is a follow-up to issue #1244. v1.135 added `listRuns` to GHWorkflow, but that doesn’t have support for adding any query parameters list GHRepository’s `queryWorkflowRuns` does.\r\n\r\nI checked out the source code and tried adding support for this myself, but ran into two issues:\r\n* On importing the project into Eclipse, I get a “Maven Project Build Lifecycle Mapping Problem” that I have no idea how to fix:\r\n> Plugin execution not covered by lifecycle configuration: com.infradna.tool:bridge-method-injector:1.18:process (execution: default, phase: process-classes)\r\n* I don’t know how test data is generated\r\n\r\nWith these limitations in mind, I have the following suggested changes. I’ve added an optional `workflow` field to GHWorkflowRunQueryBuilder which is set if created by GHWorkflow.queryWorkflowRuns. If this is set, the query’s `list` method uses the [list workflow runs](https://docs.github.com/en/rest/reference/actions#list-workflow-runs) endpoint instead of [list workflow runs for a repository](https://docs.github.com/en/rest/reference/actions#list-workflow-runs-for-a-repository).\r\n\r\nAlso, I added support in the query builder to set `status` to a Conclusion or an arbitrary string, since the GitHub API supports any status or conclusion values for this parameter.\r\n```\r\ndiff --git a/src/main/java/org/kohsuke/github/GHWorkflow.java b/src/main/java/org/kohsuke/github/GHWorkflow.java\r\nindex ea195e5b1..569abb582 100644\r\n--- a/src/main/java/org/kohsuke/github/GHWorkflow.java\r\n+++ b/src/main/java/org/kohsuke/github/GHWorkflow.java\r\n@@ -145,6 +145,15 @@ public class GHWorkflow extends GHObject {\r\n return new GHWorkflowRunsIterable(owner, root().createRequest().withUrlPath(getApiRoute(), \"runs\"));\r\n }\r\n \r\n+ /**\r\n+ * Retrieves workflow runs.\r\n+ *\r\n+ * @return the workflow run query builder\r\n+ */\r\n+ public GHWorkflowRunQueryBuilder queryWorkflowRuns() {\r\n+ return new GHWorkflowRunQueryBuilder(this);\r\n+ }\r\n+\r\n private String getApiRoute() {\r\n if (owner == null) {\r\n // Workflow runs returned from search to do not have an owner. Attempt to use url.\r\ndiff --git a/src/main/java/org/kohsuke/github/GHWorkflowRunQueryBuilder.java b/src/main/java/org/kohsuke/github/GHWorkflowRunQueryBuilder.ja\r\nva\r\nindex 57a482d1b..0093ccb33 100644\r\n--- a/src/main/java/org/kohsuke/github/GHWorkflowRunQueryBuilder.java\r\n+++ b/src/main/java/org/kohsuke/github/GHWorkflowRunQueryBuilder.java\r\n@@ -1,5 +1,6 @@\r\n package org.kohsuke.github;\r\n \r\n+import org.kohsuke.github.GHWorkflowRun.Conclusion;\r\n import org.kohsuke.github.GHWorkflowRun.Status;\r\n \r\n /**\r\n@@ -10,10 +11,18 @@ import org.kohsuke.github.GHWorkflowRun.Status;\r\n */\r\n public class GHWorkflowRunQueryBuilder extends GHQueryBuilder {\r\n private final GHRepository repo;\r\n+ private final GHWorkflow workflow;\r\n \r\n GHWorkflowRunQueryBuilder(GHRepository repo) {\r\n super(repo.root());\r\n this.repo = repo;\r\n+ workflow = null;\r\n+ }\r\n+\r\n+ GHWorkflowRunQueryBuilder(GHWorkflow workflow) {\r\n+ super(workflow.getRepository().root());\r\n+ this.repo = workflow.getRepository();\r\n+ this.workflow = workflow;\r\n }\r\n \r\n /**\r\n@@ -88,8 +97,36 @@ public class GHWorkflowRunQueryBuilder extends GHQueryBuilder {\r\n return this;\r\n }\r\n \r\n+ /**\r\n+ * Status workflow run query builder.\r\n+ *\r\n+ * @param conclusion\r\n+ * the conclusion\r\n+ * @return the gh workflow run query builder\r\n+ */\r\n+ public GHWorkflowRunQueryBuilder status(Conclusion conclusion) {\r\n+ req.with(\"status\", conclusion.toString());\r\n+ return this;\r\n+ }\r\n+\r\n+ /**\r\n+ * Status workflow run query builder.\r\n+ *\r\n+ * @param status\r\n+ * the status\r\n+ * @return the gh workflow run query builder\r\n+ */\r\n+ public GHWorkflowRunQueryBuilder status(String status) {\r\n+ req.with(\"status\", status);\r\n+ return this;\r\n+ }\r\n+\r\n @Override\r\n public PagedIterable list() {\r\n- return new GHWorkflowRunsIterable(repo, req.withUrlPath(repo.getApiTailUrl(\"actions/runs\")));\r\n+ if (workflow == null)\r\n+ return new GHWorkflowRunsIterable(repo, req.withUrlPath(repo.getApiTailUrl(\"actions/runs\")));\r\n+ else\r\n+ return new GHWorkflowRunsIterable(repo, req.withUrlPath(\r\n+ repo.getApiTailUrl(String.format(\"actions/workflows/%d/runs\", workflow.getId()))));\r\n }\r\n }\r\ndiff --git a/src/test/java/org/kohsuke/github/GHWorkflowTest.java b/src/test/java/org/kohsuke/github/GHWorkflowTest.java\r\nindex a91f9f4ca..86e653787 100644\r\n--- a/src/test/java/org/kohsuke/github/GHWorkflowTest.java\r\n+++ b/src/test/java/org/kohsuke/github/GHWorkflowTest.java\r\n@@ -121,6 +121,17 @@ public class GHWorkflowTest extends AbstractGitHubWireMockTest {\r\n checkWorkflowRunProperties(workflowRuns.get(1), workflow.getId());\r\n }\r\n \r\n+ //Test\r\n+ public void testQueryWorkflowRuns() throws IOException {\r\n+ GHWorkflow workflow = repo.getWorkflow(\"test-workflow.yml\");\r\n+\r\n+ List workflowRuns = workflow.queryWorkflowRuns()\r\n+ .list().toList();\r\n+ assertThat(workflowRuns.size(), is(1));\r\n+\r\n+ checkWorkflowRunProperties(workflowRuns.get(0), workflow.getId());\r\n+ }\r\n+\r\n private static void checkWorkflowRunProperties(GHWorkflowRun workflowRun, long workflowId) throws IOException {\r\n assertThat(workflowRun.getWorkflowId(), equalTo(workflowId));\r\n assertThat(workflowRun.getId(), notNullValue());\r\n```\r\n\r\nI was able to build the library and test this change in my application, and it appears to work as expected. These are the changes I made in my application to test it: the original code was using both GHWorkflow.listRuns and GHRepository.queryWorkflowRuns, and had to filter the results; now both parts of the code use GHWorkflow.queryWorkflowRuns with minimal or no filtering.\r\n```\r\n@@ -1199,21 +1240,15 @@ public class GitHubRestAPIClient {\r\n String.format(\"%s/%s\", organization, repository));\r\n GHWorkflow wf = repo.getWorkflow(workflowId);\r\n \r\n- // FIXME: GHWorkflow doesn't support query parameters for listing runs\r\n- // See: https://github.com/hub4j/github-api/issues/1244\r\n- PagedIterable workflowRuns = wf.listRuns();\r\n- // repo.queryWorkflowRuns().branch(branch).list();\r\n+ GHWorkflowRunQueryBuilder query = wf.queryWorkflowRuns();\r\n+ if (StringUtils.isNotBlank(branch))\r\n+ query = query.branch(branch);\r\n+ PagedIterable workflowRuns = query.list();\r\n \r\n- // Until we can select a single branch, we need a large enough\r\n- // page size to have a good chance of seeing the desired workflow.\r\n- PagedIterator iter = workflowRuns/* .withPageSize(1) */.iterator();\r\n+ PagedIterator iter = workflowRuns.withPageSize(1).iterator();\r\n while (iter.hasNext()) {\r\n \r\n GHWorkflowRun run = iter.next();\r\n- if (StringUtils.isNotBlank(branch)) {\r\n- if (!run.getHeadBranch().equals(branch))\r\n- continue;\r\n- }\r\n \r\n // HDBE-1868: If this run was skipped, ignore it.\r\n if (run.getConclusion() == GHWorkflowRun.Conclusion.SKIPPED)\r\n@@ -1285,22 +1320,16 @@ public class GitHubRestAPIClient {\r\n String.format(\"%s/%s\", organization, repository));\r\n GHWorkflow wf = repo.getWorkflow(workflowId);\r\n \r\n- PagedIterable workflowRuns =\r\n- repo.queryWorkflowRuns()\r\n- .branch(Optional.ofNullable(branch).orElse(repo.getDefaultBranch()))\r\n- .list();\r\n+ GHWorkflowRunQueryBuilder query = wf.queryWorkflowRuns();\r\n+ if (StringUtils.isNotBlank(branch))\r\n+ query = query.branch(branch);\r\n+ PagedIterable workflowRuns = query.list();\r\n \r\n PagedIterator iter = workflowRuns.iterator();\r\n while (iter.hasNext()) {\r\n \r\n GHWorkflowRun run = iter.next();\r\n- if (run.getWorkflowId() != wf.getId())\r\n- continue;\r\n-\r\n- if ((run.getStatus() != GHWorkflowRun.Status.COMPLETED) ||\r\n- (run.getConclusion() != GHWorkflowRun.Conclusion.SUCCESS))\r\n- continue;\r\n-\r\n return new WorkflowRun(run, findTargetCommit(run, commitArtifact));\r\n \r\n }\r\n```\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1330/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1330/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1024", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1024/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1024/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1024/events", + "html_url": "https://github.com/hub4j/github-api/issues/1024", + "id": 789898861, + "node_id": "MDU6SXNzdWU3ODk4OTg4NjE=", + "number": 1024, + "title": "GHProjectCard return null on getContent()", + "user": { + "login": "WolverMinion", + "id": 23451407, + "node_id": "MDQ6VXNlcjIzNDUxNDA3", + "avatar_url": "https://avatars.githubusercontent.com/u/23451407?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/WolverMinion", + "html_url": "https://github.com/WolverMinion", + "followers_url": "https://api.github.com/users/WolverMinion/followers", + "following_url": "https://api.github.com/users/WolverMinion/following{/other_user}", + "gists_url": "https://api.github.com/users/WolverMinion/gists{/gist_id}", + "starred_url": "https://api.github.com/users/WolverMinion/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/WolverMinion/subscriptions", + "organizations_url": "https://api.github.com/users/WolverMinion/orgs", + "repos_url": "https://api.github.com/users/WolverMinion/repos", + "events_url": "https://api.github.com/users/WolverMinion/events{/privacy}", + "received_events_url": "https://api.github.com/users/WolverMinion/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": { + "login": "km2018", + "id": 13594336, + "node_id": "MDQ6VXNlcjEzNTk0MzM2", + "avatar_url": "https://avatars.githubusercontent.com/u/13594336?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/km2018", + "html_url": "https://github.com/km2018", + "followers_url": "https://api.github.com/users/km2018/followers", + "following_url": "https://api.github.com/users/km2018/following{/other_user}", + "gists_url": "https://api.github.com/users/km2018/gists{/gist_id}", + "starred_url": "https://api.github.com/users/km2018/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/km2018/subscriptions", + "organizations_url": "https://api.github.com/users/km2018/orgs", + "repos_url": "https://api.github.com/users/km2018/repos", + "events_url": "https://api.github.com/users/km2018/events{/privacy}", + "received_events_url": "https://api.github.com/users/km2018/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "assignees": [ + { + "login": "km2018", + "id": 13594336, + "node_id": "MDQ6VXNlcjEzNTk0MzM2", + "avatar_url": "https://avatars.githubusercontent.com/u/13594336?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/km2018", + "html_url": "https://github.com/km2018", + "followers_url": "https://api.github.com/users/km2018/followers", + "following_url": "https://api.github.com/users/km2018/following{/other_user}", + "gists_url": "https://api.github.com/users/km2018/gists{/gist_id}", + "starred_url": "https://api.github.com/users/km2018/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/km2018/subscriptions", + "organizations_url": "https://api.github.com/users/km2018/orgs", + "repos_url": "https://api.github.com/users/km2018/repos", + "events_url": "https://api.github.com/users/km2018/events{/privacy}", + "received_events_url": "https://api.github.com/users/km2018/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + } + ], + "milestone": null, + "comments": 15, + "created_at": "2021-01-20T11:35:09Z", + "updated_at": "2021-12-09T15:10:44Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nI need a issue list from a project column. The implementation is in a jenkins shared library.\r\nIt's easy to use. Unfortunately I get an error.\r\nSee this Code. github-api is included as a dependency with version 1.122\r\n\r\n**To Reproduce**\r\n\r\n```groovy\r\nimport ....\r\nfinal GitHub github = GitHub.connectToEnterpriseWithOAuth('https://github.enterprise.com/api/v3', null, 'usertoken123')\r\nfinal GHProjectColumn projectColumn = github.getProjectColumn(12345)\r\nprojectColumn.listCards().each { projectCard ->\r\n echo \"\"\"\r\nProjectCard: ${projectCard}\r\nContentUrl: ${projectCard.getContentUrl()}\r\nContent: ${projectCard.getContent()}\r\n\"\"\"\r\n GHIssue issue = projectCard.getContent()\r\n // issue must not be null\r\n}\r\n```\r\nhttps://github.com/hub4j/github-api/blob/8e6dbf37724cd76096b339ea7399fd49d06b49cb/src/main/java/org/kohsuke/github/GHProjectCard.java#L120\r\n\r\n**Expected behavior**\r\n`projectCard.getContent()` return the existing issue object or a helpful error message.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: unimportant\r\n - Browser unimportant\r\n - Version 1.122\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1024/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1024/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1292", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1292/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1292/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1292/events", + "html_url": "https://github.com/hub4j/github-api/issues/1292", + "id": 1049950516, + "node_id": "I_kwDOAAlq-s4-lPk0", + "number": 1292, + "title": "Can't find API for managing Secrets", + "user": { + "login": "yolch-yolchyan", + "id": 6720157, + "node_id": "MDQ6VXNlcjY3MjAxNTc=", + "avatar_url": "https://avatars.githubusercontent.com/u/6720157?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yolch-yolchyan", + "html_url": "https://github.com/yolch-yolchyan", + "followers_url": "https://api.github.com/users/yolch-yolchyan/followers", + "following_url": "https://api.github.com/users/yolch-yolchyan/following{/other_user}", + "gists_url": "https://api.github.com/users/yolch-yolchyan/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yolch-yolchyan/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yolch-yolchyan/subscriptions", + "organizations_url": "https://api.github.com/users/yolch-yolchyan/orgs", + "repos_url": "https://api.github.com/users/yolch-yolchyan/repos", + "events_url": "https://api.github.com/users/yolch-yolchyan/events{/privacy}", + "received_events_url": "https://api.github.com/users/yolch-yolchyan/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2021-11-10T15:14:31Z", + "updated_at": "2021-12-07T09:20:31Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I was wondering if there is an API to manage GitHub repo secrets?\r\n`/repos/{owner}/{repo}/actions/secrets/{secret_name}`\r\n\r\nIf we have developed one, could you please point me out how to use it?", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1292/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1292/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1325", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1325/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1325/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1325/events", + "html_url": "https://github.com/hub4j/github-api/issues/1325", + "id": 1063300922, + "node_id": "I_kwDOAAlq-s4_YK86", + "number": 1325, + "title": "Accessing Gists via getMyself().listGists() returns null data for Gist files", + "user": { + "login": "EasyG0ing1", + "id": 10106834, + "node_id": "MDQ6VXNlcjEwMTA2ODM0", + "avatar_url": "https://avatars.githubusercontent.com/u/10106834?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/EasyG0ing1", + "html_url": "https://github.com/EasyG0ing1", + "followers_url": "https://api.github.com/users/EasyG0ing1/followers", + "following_url": "https://api.github.com/users/EasyG0ing1/following{/other_user}", + "gists_url": "https://api.github.com/users/EasyG0ing1/gists{/gist_id}", + "starred_url": "https://api.github.com/users/EasyG0ing1/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/EasyG0ing1/subscriptions", + "organizations_url": "https://api.github.com/users/EasyG0ing1/orgs", + "repos_url": "https://api.github.com/users/EasyG0ing1/repos", + "events_url": "https://api.github.com/users/EasyG0ing1/events{/privacy}", + "received_events_url": "https://api.github.com/users/EasyG0ing1/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2021-11-25T08:41:01Z", + "updated_at": "2021-12-07T09:19:17Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Once I authenticate to GitHub with a valid access token, but then attempt to pull the Map of Gists using this method:\r\n\r\n`gitHub.getMyself().listGists();`\r\n\r\nIt will give me a map of GHGist objects and their gistId's, but when I then use the GHGist object to pull the files out of Gist, the file data comes back null.\r\n\r\nEdit:\r\nHere is some test code with the output if it helps:\r\n\r\n```\r\nSystem.out.println(\"GistID's from GHGist objects:\");\r\n\tfor (GHGist ghGist : gitHub.getMyself().listGists().toList()) {\r\n\t\tSystem.out.println(\"\\t\"+ghGist.getGistId());\r\n\t}\r\n\r\nSystem.out.println(\"\\nFrom the same GHGist objects, here is the data that their GHGistFile objects contain:\\n\\nFilename: Content\");\r\n\tfor (GHGist ghGist : gitHub.getMyself().listGists().toList()) {\r\n\t\tfor(GHGistFile ghGistFile : ghGist.getFiles().values()) {\r\n\t\t\tSystem.out.print(\"\\t\"+ghGistFile.getFileName()+\": \");\r\n\t\t\tSystem.out.println(ghGistFile.getContent());\r\n\t\t}\r\n\t}\r\n```\r\n\r\nOutput:\r\n\r\n```\r\nGistID's from GHGist objects:\r\n\t9dc8a008611a40e94099b1c0b6863733\r\n\t342f5623cf3df3661f46ebf4ca2a2675\r\n\tc2f0e3c0e5db2d9ad4bcf330e07927fb\r\n\tb8f9336f40e578c3592050a239bfdeb4\r\n\tda95ba9977e6b41bbe4dd66091f90212\r\n\tee3699324888a1217615584e77e900ad\r\n\t420cdb2f098acfbfa1d16846851e9de4\r\n\t7902bc4639d0488a8f033b603072a842\r\n\t79203c3de770580d82d445de62d584f6\r\n\td8113d698853c46b5aef2de7ea786c80\r\n\t9338e8ceffa445b67258a19b9c9bce9e\r\n\ta46bde2c727b9cd786020d6ba1114d2b\r\n\tfadaf09355fa5d9dae4ca30515444d8a\r\n\t253537184cf23cfa4f16af4b04514fce\r\n\tfb8d3c4c262eefe2a49943839c8b5f1e\r\n\t125a9b33b989d003db4fcf11c4809246\r\n\t313f42ddb1a6cecf2be8d2652aa955e2\r\n\tf90e14487c49ef58bc79696e25dcfbd7\r\n\r\nFrom the same GHGist objects, here is the data that their GHGistFile objects contain:\r\n\r\nFilename: Content\r\n\tFile.java: null\r\n\tTestFile.cpp: null\r\n\tTestFile.java: null\r\n\tnewGistFile.java: null\r\n\tSerialzedObjectToBlob.java: null\r\n\tTextFieldConstraints.java: null\r\n\tRun.java: null\r\n\tButton.css: null\r\n\tStringPatterns2.java: null\r\n\tRangeMap.java: null\r\n\tthemeDetector.java: null\r\n\tATestForAnother.java: null\r\n\tClassSerializationFileIO.java: null\r\n\tDisk.java: null\r\n\tFileChecksum.java: null\r\n\tFileWalker.java: null\r\n\tSampleNew.java: null\r\n\tdb.java: null\r\n\tpom.xml: null\r\n\tBegin.java: null\r\n\tCSSBoxStyles.java: null\r\n\tshadow-styles.css: null\r\n\tListOrganizer.java: null\r\n\tOffScreenOffThreadCharts.java: null\r\n\tpackage.sh: null\r\n\tGOGOGadget.css: null\r\n\tGitMeOuttaHere.java: null\r\n\tSomethingDifferent.cpp: null\r\n\tStringBuilder.java: null\r\n\tC.java: null\r\n\tRouter.txt: null\r\n\tSwitchA.text: null\r\n\tSwitchB: null\r\n\tSwitchC.txt: null\r\n\r\n```\r\n\r\nYou can see that the File objects contain the name of the file, but not the content of the file.\r\n\r\nThank you,\r\n\r\nMike", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1325/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1325/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1191", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1191/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1191/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1191/events", + "html_url": "https://github.com/hub4j/github-api/issues/1191", + "id": 932007585, + "node_id": "MDU6SXNzdWU5MzIwMDc1ODU=", + "number": 1191, + "title": "Fix GHContentUpdatedResponse to return GitCommit instead of GHCommit", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2021-06-28T21:24:35Z", + "updated_at": "2021-11-29T17:58:59Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "In #1185, @takezoe discovered that the date returned for `GHContentUpdatedResponse.commit` does not match up with `GHCommit`. It most closely matches `GHCommit.ShortInfo` but even that is not truly accurate. \r\n\r\nIn #1190 , I figured out that while this a bad the functionality is not completely broken. The `sha` and the `url` match up and that is enough for the `GHCommit` to populate the missing data and continue on. This is still not great because it results in additional requests where there probably shouldn't be any. \r\n\r\n After a bit of digging in the docs, I found an endpoint that [gets a Git Commit](https://docs.github.com/en/rest/reference/git#get-a-commit). What we should do is create a new class called `GitCommit` , matching the structure of this endpoint and then have other classes like `GHCommit.ShortInfo` extend that class. \r\n\r\nFixing this will involve creating a bridge method for `getCommit()` that continues to return a working `GHCommit` while the new official API method returns a `GitCommit`. As part of this, we'll need to add a reflection based call to the `GHCommit`-returning method and verify that instance still works.\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1191/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1191/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1327", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1327/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1327/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1327/events", + "html_url": "https://github.com/hub4j/github-api/issues/1327", + "id": 1065124046, + "node_id": "I_kwDOAAlq-s4_fIDO", + "number": 1327, + "title": "Update Issue and PR templates to be generated from forms", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2021-11-27T20:18:54Z", + "updated_at": "2021-11-27T20:19:02Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Help contributors follow submission guidelines for issue and pull requests in this project by making custom forms for default PR and bug report. \r\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1327/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1327/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1320", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1320/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1320/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1320/events", + "html_url": "https://github.com/hub4j/github-api/issues/1320", + "id": 1061515819, + "node_id": "I_kwDOAAlq-s4_RXIr", + "number": 1320, + "title": "Rename `GHDiscussion` to `GHTeamDiscussion`", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2021-11-23T16:59:53Z", + "updated_at": "2021-11-23T17:02:44Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": null, + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1320/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1320/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1265", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1265/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1265/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1265/events", + "html_url": "https://github.com/hub4j/github-api/issues/1265", + "id": 1027642217, + "node_id": "I_kwDOAAlq-s49QJNp", + "number": 1265, + "title": "GHWorkflow.dispatch does not throw an exception on a 422 HTTP status", + "user": { + "login": "Typraeurion", + "id": 36168707, + "node_id": "MDQ6VXNlcjM2MTY4NzA3", + "avatar_url": "https://avatars.githubusercontent.com/u/36168707?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Typraeurion", + "html_url": "https://github.com/Typraeurion", + "followers_url": "https://api.github.com/users/Typraeurion/followers", + "following_url": "https://api.github.com/users/Typraeurion/following{/other_user}", + "gists_url": "https://api.github.com/users/Typraeurion/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Typraeurion/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Typraeurion/subscriptions", + "organizations_url": "https://api.github.com/users/Typraeurion/orgs", + "repos_url": "https://api.github.com/users/Typraeurion/repos", + "events_url": "https://api.github.com/users/Typraeurion/events{/privacy}", + "received_events_url": "https://api.github.com/users/Typraeurion/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2021-10-15T17:16:10Z", + "updated_at": "2021-11-22T01:31:00Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nI’ve been tracing the code to see why my application apparently succeeds in sending a workflow dispatch request yet the workflow never starts. Eventually I found that after sending a POST request to /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches (no body, because I had passed `null` as the ref), GitHub responds with error 422 Unprocessable Entity. GitHubClient isn’t throwing an exception for this code; instead, the GitHubClient.sendRequest method returns a GitHubResponse,Requester.fetchHttpStatusCode returns 422, and GHWorkflow.dispatch ignores it, so my application thinks the request succeeded when it actually failed.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n```\r\n // authToken, organization, repository, and workflowId are set;\r\n // branch = null; inputs = Collections.emptyMap();\r\n\r\n GHWorkflow workflow = getConnection(authToken).getRepository(\r\n String.format(\"%s/%s\", organization, repository))\r\n .getWorkflow(workflowId);\r\n\r\n workflow.dispatch(branch, Optional.ofNullable(inputs)\r\n .orElse(Collections.emptyMap()));\r\n```\r\n\r\n**Expected behavior**\r\nThe method should either have thrown a GHIOException (or appropriate subclass for HTTP status 422), or should see that `branch` is null and throw an IllegalArgumentException.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: MacOS 11.4\r\n - Java: 1.8.0_162\r\n - github-api Version: 1.133\r\n- okhttp Version: 4.9.2\r\n\r\n**Additional context**\r\nPer https://docs.github.com/en/rest/reference/actions#create-a-workflow-dispatch-event, a `ref` parameter in the request body is *required*.\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1265/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1265/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1291", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1291/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1291/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1291/events", + "html_url": "https://github.com/hub4j/github-api/issues/1291", + "id": 1048007408, + "node_id": "I_kwDOAAlq-s4-d1Lw", + "number": 1291, + "title": "Consider relaxing the requirements for JavaDoc in the project", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2021-11-08T23:04:25Z", + "updated_at": "2021-11-08T23:05:00Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Per discussion with @nedtwigg in #1290 , it might make sense to turn down the warning/linting level for javadoc in the project. \r\n\r\n> I love when javadoc has example inputs/outputs (this project scores 10/10 there) but I'm annoyed by rigid compliance with a javadoc linter forcing that gold to get diluted with \"returns the value\" boilerplate. \r\n\r\nand \r\n\r\n> > Not great but compliant is still better than non-compliant.\r\n> \r\n> Why? I do a lot of work on Spotless, because I think formatting doesn't matter and I don't want to talk about formatting.\r\n> \r\n> When it comes to documentation, I think it does matter, and so it's worth talking about. Automated tools can't say `obviously getFoo() returns foo` vs `it's interesting that getFoo() returns a String guaranteed to start with 'git://'`. So whether or not the documentation adds information beyond what's already in the name and type signature of the method is a human judgement call (for now, copilot is coming for us!). IMO, automated enforcement of\r\n> \r\n> * does this documentation add information? -> return true, always document everything, users don't need to read the implementation\r\n> \r\n> isn't much better than\r\n> \r\n> * does this documentation add information? -> return false, never document anything, users need to read the implementation\r\n> \r\n> If you add `options.addStringOption('Xdoclint:none', '-quiet')` then it will still error for undefined `@link` and things like that, but it lets \"(to / not to) document\" be the judgement call that imo it should be.\r\n> \r\n> ``\r\n\r\nand\r\n\r\n> > could you open an issue for this\r\n> \r\n> I've thought a lot about this topic, and I don't have any more to add besides this:\r\n> \r\n> * Train a low-parameter neural net on the dataset `function name+signature -> javadoc` for your project.\r\n> * For each javadoc, diff the neural net's prediction against what the javadoc actually is\r\n> * Remove all the identical parts of the javadoc\r\n> \r\n> I don't plan to build this, but imo that's the way I would think about it. Happy documenting ;-)\r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1291/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1291/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1279", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1279/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1279/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1279/events", + "html_url": "https://github.com/hub4j/github-api/issues/1279", + "id": 1041406594, + "node_id": "I_kwDOAAlq-s4-EpqC", + "number": 1279, + "title": "GHGist does not handle file truncation", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2021-11-01T17:19:36Z", + "updated_at": "2021-11-01T17:19:36Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "https://docs.github.com/en/rest/reference/gists#truncation points out that file contents are truncated after one megabyte. \r\nThis situation is not handled. \r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1279/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1279/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1266", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1266/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1266/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1266/events", + "html_url": "https://github.com/hub4j/github-api/issues/1266", + "id": 1031052781, + "node_id": "I_kwDOAAlq-s49dJ3t", + "number": 1266, + "title": "Create example for creating submodules within a repo", + "user": { + "login": "balajikadambi", + "id": 25296042, + "node_id": "MDQ6VXNlcjI1Mjk2MDQy", + "avatar_url": "https://avatars.githubusercontent.com/u/25296042?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/balajikadambi", + "html_url": "https://github.com/balajikadambi", + "followers_url": "https://api.github.com/users/balajikadambi/followers", + "following_url": "https://api.github.com/users/balajikadambi/following{/other_user}", + "gists_url": "https://api.github.com/users/balajikadambi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/balajikadambi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/balajikadambi/subscriptions", + "organizations_url": "https://api.github.com/users/balajikadambi/orgs", + "repos_url": "https://api.github.com/users/balajikadambi/repos", + "events_url": "https://api.github.com/users/balajikadambi/events{/privacy}", + "received_events_url": "https://api.github.com/users/balajikadambi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + }, + { + "id": 2070644911, + "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", + "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", + "name": "documentation", + "color": "6ee5cb", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2021-10-20T07:04:00Z", + "updated_at": "2021-10-21T16:48:01Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Is there an API to create sub modules within a repository? Any help to handle this programmatically is appreciated.\r\nThanks for your help!\r\n\r\nRegards,\r\nBalaji", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1266/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1266/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + } + ] +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/7-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/7-search_issues.json new file mode 100644 index 0000000000..394b503189 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/7-search_issues.json @@ -0,0 +1,2739 @@ +{ + "total_count": 164, + "incomplete_results": false, + "items": [ + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/833", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/833/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/833/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/833/events", + "html_url": "https://github.com/hub4j/github-api/issues/833", + "id": 626776927, + "node_id": "MDU6SXNzdWU2MjY3NzY5Mjc=", + "number": 833, + "title": "Stop using `getUrl()` for populate and refresh actions", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2020-05-28T20:00:43Z", + "updated_at": "2021-09-26T20:52:32Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "The urls returned from github are often problematic and inaccurate. \r\n\r\nExample: \r\nThe url return `getRef()` returns a url with `git/refs` in it, even when the original query was to `git/ref`. \r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/833/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/833/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1217", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1217/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1217/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1217/events", + "html_url": "https://github.com/hub4j/github-api/issues/1217", + "id": 982693023, + "node_id": "MDU6SXNzdWU5ODI2OTMwMjM=", + "number": 1217, + "title": "Issues for tree in commit", + "user": { + "login": "Osiris-Team", + "id": 59899645, + "node_id": "MDQ6VXNlcjU5ODk5NjQ1", + "avatar_url": "https://avatars.githubusercontent.com/u/59899645?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Osiris-Team", + "html_url": "https://github.com/Osiris-Team", + "followers_url": "https://api.github.com/users/Osiris-Team/followers", + "following_url": "https://api.github.com/users/Osiris-Team/following{/other_user}", + "gists_url": "https://api.github.com/users/Osiris-Team/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Osiris-Team/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Osiris-Team/subscriptions", + "organizations_url": "https://api.github.com/users/Osiris-Team/orgs", + "repos_url": "https://api.github.com/users/Osiris-Team/repos", + "events_url": "https://api.github.com/users/Osiris-Team/events{/privacy}", + "received_events_url": "https://api.github.com/users/Osiris-Team/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + }, + { + "id": 2070644911, + "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", + "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", + "name": "documentation", + "color": "6ee5cb", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2021-08-30T11:31:56Z", + "updated_at": "2021-09-24T06:40:37Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\n```log\r\nError: Exception in thread \"main\" org.kohsuke.github.HttpException: {\"message\":\"tree.path cannot start with a slash\",\"documentation_url\":\"https://docs.github.com/rest/reference/git#create-a-tree\"}\r\n\tat org.kohsuke.github.GitHubClient.interpretApiError(GitHubClient.java:483)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:407)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:355)\r\n\tat org.kohsuke.github.Requester.fetch(Requester.java:76)\r\n\tat org.kohsuke.github.GHTreeBuilder.create(GHTreeBuilder.java:171)\r\n\tat com.osiris.pandomiumbuilder.STEP3.(STEP3.java:140)\r\n\tat com.osiris.pandomiumbuilder.Main.main(Main.java:49)\r\nCaused by: java.io.IOException: Server returned HTTP response code: 422 for URL: https://api.github.com/repos/Osiris-Team/pandomium/git/trees\r\n...\r\n```\r\n\r\n**To Reproduce**\r\n```java\r\n...\r\n System.out.println(\"Authenticating with token...\");\r\n GitHub github = new GitHubBuilder().withOAuthToken(O_AUTH_TOKEN).build();\r\n System.out.println(\"Success!\");\r\n System.out.println(\"Getting repo: '\"+OWNER_AND_REPO+\"'...\");\r\n repo = github.getRepository(OWNER_AND_REPO);\r\n System.out.println(\"Success!\");\r\n System.out.println(\"Committing updated files...\");\r\n GHRef mainRef = repo.getRef(\"heads/master\");\r\n String mainTreeSha = repo.getTreeRecursive(\"master\", 1).getSha();\r\n GHTreeBuilder treeBuilder = repo.createTree().baseTree(mainTreeSha);\r\n commitFile(treeBuilder, mavenInstallScript);\r\n commitFile(treeBuilder, pandomiumParentPomFile);\r\n commitFile(treeBuilder, pandomiumPomFile);\r\n for (File fatJar :\r\n fatJars) {\r\n commitFile(treeBuilder, fatJar);\r\n }\r\n String treeSha = treeBuilder.create().getSha(); // THIS IS LINE 140 WHERE THE EXCEPTION GETS THROWN\r\n GHCommit commit = repo.createCommit().message(\"Add files\")\r\n .tree(treeSha)\r\n .message(fullTagName+\" - Updated files\")\r\n .author(\"author\", \"pandomium@builder.com\", new Date())\r\n .committer(\"committer\", \"pandomium@builder.com\", new Date())\r\n .parent(mainRef.getObject().getSha())\r\n .create();\r\n String commitSha = commit.getSHA1();\r\n mainRef.updateTo(commitSha);\r\n System.out.println(\"Success!\");\r\n }\r\n\r\n private void commitFile(GHTreeBuilder treeBuilder, File file) throws IOException {\r\n treeBuilder.add(file.getAbsolutePath(), Files.readAllBytes(file.toPath()), false);\r\n }\r\n```\r\n\r\n**Expected behavior**\r\nCreate commit without exception and push it to the repo.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: Windows\r\n - Browser Chrome\r\n - Version latest", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1217/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1217/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1181", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1181/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1181/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1181/events", + "html_url": "https://github.com/hub4j/github-api/issues/1181", + "id": 916818327, + "node_id": "MDU6SXNzdWU5MTY4MTgzMjc=", + "number": 1181, + "title": "Create a new implementation for issue events that aligns with webhook event design ", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + }, + { + "id": 1780165359, + "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", + "name": "breaking change", + "color": "b60205", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2021-06-10T02:14:49Z", + "updated_at": "2021-07-26T19:19:51Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Found by #1175 \r\nRelated #1199 \r\n\r\nIssue events are similar to webhook events: there are a set of common attributes and then different events types have different additional fields.\r\n\r\nSee:\r\n* https://docs.github.com/en/developers/webhooks-and-events/events/issue-event-types#issue-event-object-common-properties\r\n* https://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GHEventPayload.java#L22-L24\r\n\r\nHowever, `GHIssueEvent` is implemented completely differently from `GHEvent` and `GHEventPayload`. We should have a design that is similar instead. \r\n\r\nDoing this is likely either a breaking change or at very least an addition of a new API and deprecation of the current classes. \r\n\r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1181/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1181/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/836", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/836/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/836/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/836/events", + "html_url": "https://github.com/hub4j/github-api/issues/836", + "id": 630834026, + "node_id": "MDU6SXNzdWU2MzA4MzQwMjY=", + "number": 836, + "title": "Enable adding labels if User has triage role", + "user": { + "login": "blacelle", + "id": 2117911, + "node_id": "MDQ6VXNlcjIxMTc5MTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/2117911?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/blacelle", + "html_url": "https://github.com/blacelle", + "followers_url": "https://api.github.com/users/blacelle/followers", + "following_url": "https://api.github.com/users/blacelle/following{/other_user}", + "gists_url": "https://api.github.com/users/blacelle/gists{/gist_id}", + "starred_url": "https://api.github.com/users/blacelle/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/blacelle/subscriptions", + "organizations_url": "https://api.github.com/users/blacelle/orgs", + "repos_url": "https://api.github.com/users/blacelle/repos", + "events_url": "https://api.github.com/users/blacelle/events{/privacy}", + "received_events_url": "https://api.github.com/users/blacelle/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1686290078, + "node_id": "MDU6TGFiZWwxNjg2MjkwMDc4", + "url": "https://api.github.com/repos/hub4j/github-api/labels/external", + "name": "external", + "color": "a0a0a0", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 9, + "created_at": "2020-06-04T13:39:08Z", + "updated_at": "2021-07-21T15:47:43Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nGiven a user with Triage access, labels are not added when creating an issue.\r\n\r\n**To Reproduce**\r\n1. Give a user Triage access to a repo\r\n2. Create a Ticket with one label\r\n\r\nThe label is not applied.\r\n\r\n**Expected behavior**\r\nGiven Triage allow applying labels, I expect my label to be applied.\r\n\r\nhttps://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization\r\n\r\nIt appears I can add the labels once the issue is created\r\n\r\nConfirmed with 1.112\r\n\r\nTypically, in this usecase, I sucvcessfully apply with labels with something like:\r\n\r\n```\r\n\t\t\tGHIssue issue = building.create();\r\n\r\n\t\t\tlabels.forEach(t -> {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tissue.addLabels(t);\r\n\t\t\t\t} catch (IOException e) {\r\n\t\t\t\t\tthrow new UncheckedIOException(e);\r\n\t\t\t\t}\r\n\t\t\t});\r\n```\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/836/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/836/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/829", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/829/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/829/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/829/events", + "html_url": "https://github.com/hub4j/github-api/issues/829", + "id": 625251397, + "node_id": "MDU6SXNzdWU2MjUyNTEzOTc=", + "number": 829, + "title": "Documentation for create Branch and PR for new changes in branch", + "user": { + "login": "riddhi2910", + "id": 32148809, + "node_id": "MDQ6VXNlcjMyMTQ4ODA5", + "avatar_url": "https://avatars.githubusercontent.com/u/32148809?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/riddhi2910", + "html_url": "https://github.com/riddhi2910", + "followers_url": "https://api.github.com/users/riddhi2910/followers", + "following_url": "https://api.github.com/users/riddhi2910/following{/other_user}", + "gists_url": "https://api.github.com/users/riddhi2910/gists{/gist_id}", + "starred_url": "https://api.github.com/users/riddhi2910/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/riddhi2910/subscriptions", + "organizations_url": "https://api.github.com/users/riddhi2910/orgs", + "repos_url": "https://api.github.com/users/riddhi2910/repos", + "events_url": "https://api.github.com/users/riddhi2910/events{/privacy}", + "received_events_url": "https://api.github.com/users/riddhi2910/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 2070644911, + "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", + "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", + "name": "documentation", + "color": "6ee5cb", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2020-05-26T22:56:14Z", + "updated_at": "2021-07-19T23:57:22Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hello,\r\n\r\nI don't see enough documentation on how to create branch and then pull requests for changes in that branch.\r\n\r\nCould you please help me with that?\r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/829/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/829/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1133", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1133/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1133/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1133/events", + "html_url": "https://github.com/hub4j/github-api/issues/1133", + "id": 873785408, + "node_id": "MDU6SXNzdWU4NzM3ODU0MDg=", + "number": 1133, + "title": "Feature request - support for code scanning", + "user": { + "login": "SavvasKatsuyaSawada", + "id": 43150831, + "node_id": "MDQ6VXNlcjQzMTUwODMx", + "avatar_url": "https://avatars.githubusercontent.com/u/43150831?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/SavvasKatsuyaSawada", + "html_url": "https://github.com/SavvasKatsuyaSawada", + "followers_url": "https://api.github.com/users/SavvasKatsuyaSawada/followers", + "following_url": "https://api.github.com/users/SavvasKatsuyaSawada/following{/other_user}", + "gists_url": "https://api.github.com/users/SavvasKatsuyaSawada/gists{/gist_id}", + "starred_url": "https://api.github.com/users/SavvasKatsuyaSawada/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/SavvasKatsuyaSawada/subscriptions", + "organizations_url": "https://api.github.com/users/SavvasKatsuyaSawada/orgs", + "repos_url": "https://api.github.com/users/SavvasKatsuyaSawada/repos", + "events_url": "https://api.github.com/users/SavvasKatsuyaSawada/events{/privacy}", + "received_events_url": "https://api.github.com/users/SavvasKatsuyaSawada/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": { + "login": "akashRindhe", + "id": 14114123, + "node_id": "MDQ6VXNlcjE0MTE0MTIz", + "avatar_url": "https://avatars.githubusercontent.com/u/14114123?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/akashRindhe", + "html_url": "https://github.com/akashRindhe", + "followers_url": "https://api.github.com/users/akashRindhe/followers", + "following_url": "https://api.github.com/users/akashRindhe/following{/other_user}", + "gists_url": "https://api.github.com/users/akashRindhe/gists{/gist_id}", + "starred_url": "https://api.github.com/users/akashRindhe/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/akashRindhe/subscriptions", + "organizations_url": "https://api.github.com/users/akashRindhe/orgs", + "repos_url": "https://api.github.com/users/akashRindhe/repos", + "events_url": "https://api.github.com/users/akashRindhe/events{/privacy}", + "received_events_url": "https://api.github.com/users/akashRindhe/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "assignees": [ + { + "login": "akashRindhe", + "id": 14114123, + "node_id": "MDQ6VXNlcjE0MTE0MTIz", + "avatar_url": "https://avatars.githubusercontent.com/u/14114123?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/akashRindhe", + "html_url": "https://github.com/akashRindhe", + "followers_url": "https://api.github.com/users/akashRindhe/followers", + "following_url": "https://api.github.com/users/akashRindhe/following{/other_user}", + "gists_url": "https://api.github.com/users/akashRindhe/gists{/gist_id}", + "starred_url": "https://api.github.com/users/akashRindhe/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/akashRindhe/subscriptions", + "organizations_url": "https://api.github.com/users/akashRindhe/orgs", + "repos_url": "https://api.github.com/users/akashRindhe/repos", + "events_url": "https://api.github.com/users/akashRindhe/events{/privacy}", + "received_events_url": "https://api.github.com/users/akashRindhe/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + } + ], + "milestone": null, + "comments": 2, + "created_at": "2021-05-01T22:45:04Z", + "updated_at": "2021-05-16T17:16:26Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Can you please correct me if I am wrong, but I cannot find implementation for access code scanning.\r\n\r\nI would love that the code scanning feature is supported in the library.\r\nhttps://docs.github.com/en/rest/reference/code-scanning\r\n\r\nI'm using: org.kohsuke:github-api:1.128", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1133/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1133/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1140", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1140/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1140/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1140/events", + "html_url": "https://github.com/hub4j/github-api/issues/1140", + "id": 881974654, + "node_id": "MDU6SXNzdWU4ODE5NzQ2NTQ=", + "number": 1140, + "title": "stargazercount is 0 unless fetched directly", + "user": { + "login": "maxandersen", + "id": 54129, + "node_id": "MDQ6VXNlcjU0MTI5", + "avatar_url": "https://avatars.githubusercontent.com/u/54129?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/maxandersen", + "html_url": "https://github.com/maxandersen", + "followers_url": "https://api.github.com/users/maxandersen/followers", + "following_url": "https://api.github.com/users/maxandersen/following{/other_user}", + "gists_url": "https://api.github.com/users/maxandersen/gists{/gist_id}", + "starred_url": "https://api.github.com/users/maxandersen/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/maxandersen/subscriptions", + "organizations_url": "https://api.github.com/users/maxandersen/orgs", + "repos_url": "https://api.github.com/users/maxandersen/repos", + "events_url": "https://api.github.com/users/maxandersen/events{/privacy}", + "received_events_url": "https://api.github.com/users/maxandersen/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2021-05-09T08:04:50Z", + "updated_at": "2021-05-12T03:47:13Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nUsing latest 1.128:\r\n\r\n`ghContent.getOwner().getStarGazersCount()` returns 0, but\r\n`gitHub.getRepository(ghContent.getOwner().getFullName()).getStargazersCount());` returns the proper count.\r\n\r\nProbably related to #349 and #1068 \r\n\r\n**Expected behavior**\r\nstargazer count should be fetched, throw error or return -1 or similar - anything but returning 0.\r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1140/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1140/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1138", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1138/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1138/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1138/events", + "html_url": "https://github.com/hub4j/github-api/issues/1138", + "id": 880034392, + "node_id": "MDU6SXNzdWU4ODAwMzQzOTI=", + "number": 1138, + "title": "Add request information (endpoint or GraphQL query details) to all data objects", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + }, + { + "id": 1686292366, + "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", + "name": "more information needed", + "color": "9ce1ed", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2021-05-08T01:05:42Z", + "updated_at": "2021-05-09T00:41:11Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Different endpoints in the REST API return different subsets of various data types. `GHRepository` comes in any number of forms depending on what endpoint is returning it. When we implement GraphQL support this will be even more common: each query can return a different set of fields and relationships for each data type. \r\n\r\nIf we had information about the request that returned a particular record, it would be possible to predict whether a particular field has already been populated or if a refresh is needed to get that information. \r\n \r\n\r\nhttps://github.com/hub4j/github-api/pull/1136#issuecomment-834919797\r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1138/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1138/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1098", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1098/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1098/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1098/events", + "html_url": "https://github.com/hub4j/github-api/issues/1098", + "id": 858301287, + "node_id": "MDU6SXNzdWU4NTgzMDEyODc=", + "number": 1098, + "title": "Implement better common behavior/handler for 202 responses ", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2021-04-14T22:07:09Z", + "updated_at": "2021-04-14T22:07:25Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "See #1095 . \r\n\r\n> We should probably implement a 202 handling behavior in GitHubClient. Currently, forking and statistics both implement their own waiting behavior. However, now that I look at it forking returns a GHRepository on success, so maybe the waiting behavior isn't correct.\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1098/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1098/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/875", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/875/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/875/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/875/events", + "html_url": "https://github.com/hub4j/github-api/issues/875", + "id": 649854895, + "node_id": "MDU6SXNzdWU2NDk4NTQ4OTU=", + "number": 875, + "title": "Add symlink support", + "user": { + "login": "jtnord", + "id": 494726, + "node_id": "MDQ6VXNlcjQ5NDcyNg==", + "avatar_url": "https://avatars.githubusercontent.com/u/494726?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jtnord", + "html_url": "https://github.com/jtnord", + "followers_url": "https://api.github.com/users/jtnord/followers", + "following_url": "https://api.github.com/users/jtnord/following{/other_user}", + "gists_url": "https://api.github.com/users/jtnord/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jtnord/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jtnord/subscriptions", + "organizations_url": "https://api.github.com/users/jtnord/orgs", + "repos_url": "https://api.github.com/users/jtnord/repos", + "events_url": "https://api.github.com/users/jtnord/events{/privacy}", + "received_events_url": "https://api.github.com/users/jtnord/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 11, + "created_at": "2020-07-02T11:24:56Z", + "updated_at": "2021-03-23T08:22:37Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\n\r\nif a symlink exists in the repository it does not seem possible to resolve it using the current API methods\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. create a repo\r\n2. create a directory `dir`\r\n3. create a file `file` in `dir` with contents `hello world`\r\n4. create a symlink `dir-link` pointing to `dir`\r\n5. create a symlink `file-link` pointing to `dir/file`\r\n6. use the api to try and resolve `dir-link` or `file-link`\r\n\r\n**Expected behavior**\r\n\r\nThere is an API that can be used to resolve the symbolic links to the actual files\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: N/A\r\n - Browser N/A\r\n - Version N/A\r\n\r\n**Additional context**\r\n\r\nhttps://issues.jenkins-ci.org/browse/JENKINS-62922\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/875/reactions", + "total_count": 2, + "+1": 2, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/875/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1058", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1058/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1058/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1058/events", + "html_url": "https://github.com/hub4j/github-api/issues/1058", + "id": 832067018, + "node_id": "MDU6SXNzdWU4MzIwNjcwMTg=", + "number": 1058, + "title": "Refactor GHEventPayload inner classes into top level classes in a new namespace", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2021-03-15T18:11:18Z", + "updated_at": "2021-03-18T11:11:57Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "[GHEventPayload](https://github.com/hub4j/github-api/blob/master/src/main/java/org/kohsuke/github/GHEventPayload.java) is one monolithic class with a bunch of inner classes for payloads. We should look at refactoring these inner classes into their own files in a separate namespace.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1058/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1058/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/970", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/970/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/970/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/970/events", + "html_url": "https://github.com/hub4j/github-api/issues/970", + "id": 733050512, + "node_id": "MDU6SXNzdWU3MzMwNTA1MTI=", + "number": 970, + "title": "Document reading pages of items", + "user": { + "login": "eric-5512", + "id": 56282991, + "node_id": "MDQ6VXNlcjU2MjgyOTkx", + "avatar_url": "https://avatars.githubusercontent.com/u/56282991?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/eric-5512", + "html_url": "https://github.com/eric-5512", + "followers_url": "https://api.github.com/users/eric-5512/followers", + "following_url": "https://api.github.com/users/eric-5512/following{/other_user}", + "gists_url": "https://api.github.com/users/eric-5512/gists{/gist_id}", + "starred_url": "https://api.github.com/users/eric-5512/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/eric-5512/subscriptions", + "organizations_url": "https://api.github.com/users/eric-5512/orgs", + "repos_url": "https://api.github.com/users/eric-5512/repos", + "events_url": "https://api.github.com/users/eric-5512/events{/privacy}", + "received_events_url": "https://api.github.com/users/eric-5512/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 2070644911, + "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", + "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", + "name": "documentation", + "color": "6ee5cb", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 8, + "created_at": "2020-10-30T10:14:06Z", + "updated_at": "2021-03-15T18:35:42Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Return open or closed issues in pagination\r\n\r\n```\r\npublic List getIssues(GHIssueState state) throws IOException {\r\n return this.listIssues(state).toList();\r\n }\r\n\r\n public List getIssues(GHIssueState state, GHMilestone milestone) throws IOException {\r\n Requester requester = (Requester)((Requester)this.root.createRequest().with(\"state\", state)).with(\"milestone\", milestone == null ? \"none\" : \"\" + milestone.getNumber());\r\n return ((Requester)requester.withUrlPath(this.getApiTailUrl(\"issues\"), new String[0])).toIterable(GHIssue[].class, (item) -> {\r\n item.wrap(this);\r\n }).toList();\r\n }\r\n```\r\n\r\nI didn’t see any support for paging\r\n\r\n![image](https://user-images.githubusercontent.com/56282991/97699344-ef06d480-1ae4-11eb-9257-651b209018b0.png)\r\n\r\nNeed to manually specify page and pre_page", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/970/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/970/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/902", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/902/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/902/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/902/events", + "html_url": "https://github.com/hub4j/github-api/issues/902", + "id": 666414517, + "node_id": "MDU6SXNzdWU2NjY0MTQ1MTc=", + "number": 902, + "title": "GithubRequest.with() methods should not silently ignore null values ", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1780165359, + "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", + "name": "breaking change", + "color": "b60205", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2020-07-27T16:13:16Z", + "updated_at": "2021-02-11T20:06:07Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "The `GithubRequest.with()` currently discard null values. Only `GithubRequest.withNullable()` keeps them. This is convenient sometimes but leaves things open for confusing issues with missing fields. Also, the presence of `withNullable()` implies (via Spotbugs annotations) that the `with()` methods require `Nonnull`. \r\n\r\nConsider adding a `withOptional()` that ignores `null` values and changing `with()` to not ignore `null` values. \r\n\r\nSee #899 \r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/902/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/902/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/929", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/929/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/929/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/929/events", + "html_url": "https://github.com/hub4j/github-api/issues/929", + "id": 680693157, + "node_id": "MDU6SXNzdWU2ODA2OTMxNTc=", + "number": 929, + "title": "Include Project card details into response when listing issue events", + "user": { + "login": "annguyen-qh", + "id": 20037026, + "node_id": "MDQ6VXNlcjIwMDM3MDI2", + "avatar_url": "https://avatars.githubusercontent.com/u/20037026?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/annguyen-qh", + "html_url": "https://github.com/annguyen-qh", + "followers_url": "https://api.github.com/users/annguyen-qh/followers", + "following_url": "https://api.github.com/users/annguyen-qh/following{/other_user}", + "gists_url": "https://api.github.com/users/annguyen-qh/gists{/gist_id}", + "starred_url": "https://api.github.com/users/annguyen-qh/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/annguyen-qh/subscriptions", + "organizations_url": "https://api.github.com/users/annguyen-qh/orgs", + "repos_url": "https://api.github.com/users/annguyen-qh/repos", + "events_url": "https://api.github.com/users/annguyen-qh/events{/privacy}", + "received_events_url": "https://api.github.com/users/annguyen-qh/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2020-08-18T05:04:44Z", + "updated_at": "2021-01-21T16:39:10Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "It would be great if the `GHIssueEvent` class could include Project card details. This information is valuable with project-related issue events\r\n\r\nThe relevant GitHub API endpoint is `GET /repos/:owner/:repo/issues/:issue_number/events` - https://developer.github.com/v3/issues/events/#list-issue-events\r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/929/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/929/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1019", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1019/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1019/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1019/events", + "html_url": "https://github.com/hub4j/github-api/issues/1019", + "id": 784310675, + "node_id": "MDU6SXNzdWU3ODQzMTA2NzU=", + "number": 1019, + "title": "Unable to download asset from release in private repository", + "user": { + "login": "filipjonckers", + "id": 3816316, + "node_id": "MDQ6VXNlcjM4MTYzMTY=", + "avatar_url": "https://avatars.githubusercontent.com/u/3816316?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/filipjonckers", + "html_url": "https://github.com/filipjonckers", + "followers_url": "https://api.github.com/users/filipjonckers/followers", + "following_url": "https://api.github.com/users/filipjonckers/following{/other_user}", + "gists_url": "https://api.github.com/users/filipjonckers/gists{/gist_id}", + "starred_url": "https://api.github.com/users/filipjonckers/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/filipjonckers/subscriptions", + "organizations_url": "https://api.github.com/users/filipjonckers/orgs", + "repos_url": "https://api.github.com/users/filipjonckers/repos", + "events_url": "https://api.github.com/users/filipjonckers/events{/privacy}", + "received_events_url": "https://api.github.com/users/filipjonckers/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2021-01-12T14:57:31Z", + "updated_at": "2021-01-12T20:06:05Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I'm trying to download assets from a private repository - the asset is a jar/zip file which is saved in the latest release.\r\nI'm able to connect and see the asset but cannot figure out how to download the asset into a local file using the existing GitHub connection.\r\nThe response I get when trying to download is: **HTTP/1.1 406 Not Acceptable**\r\nAs mentioned in the API documentation, the accept header is set to **application/octet-stream**\r\nI am probably doing something wring in the authentication part...\r\n\r\nHow should I tackle this?\r\n\r\nSource code of a test method:\r\n\r\n```java\r\n private void testGitHubReleaseAssetDownload(final String jwtToken, final String repoFullName) {\r\n try {\r\n GitHub githubBuilder = new GitHubBuilder().withJwtToken(jwtToken).build();\r\n GHAppInstallation appInstallation = githubBuilder.getApp().getInstallationById(GITHUB_APP_INSTALLATION_ID);\r\n GHAppInstallationToken appInstallationToken = appInstallation.createToken(appInstallation.getPermissions()).create();\r\n GitHub github = new GitHubBuilder().withAppInstallationToken(appInstallationToken.getToken()).build();\r\n LOGGER.info(\"Credentials are: {}\", github.isCredentialValid() ? \"valid\" : \"invalid\");\r\n\r\n GHRepository repo = github.getRepository(repoFullName);\r\n GHRelease release = repo.getLatestRelease();\r\n GHAsset asset = release.listAssets().toList().get(0);\r\n\r\n File file = new File(\".\", asset.getName());\r\n String downloadUrl = asset.getBrowserDownloadUrl();\r\n String githubToken = appInstallationToken.getToken();\r\n\r\n try (CloseableHttpClient httpClient = HttpClients.createDefault()) {\r\n HttpGet httpGet = new HttpGet(downloadUrl);\r\n httpGet.addHeader(\"authorization:\", \"token \" + githubToken);\r\n httpGet.addHeader(\"Accept:\", \"application/octet-stream\");\r\n try (CloseableHttpResponse httpResponse = httpClient.execute(httpGet)) {\r\n // response: HTTP/1.1 406 Not Acceptable\r\n if (httpResponse.getStatusLine().getStatusCode() == 200) {\r\n HttpEntity entity = httpResponse.getEntity();\r\n if(entity.getContentLength() > 0) {\r\n FileUtils.copyInputStreamToFile(entity.getContent(), file);\r\n }\r\n }\r\n }\r\n httpGet.releaseConnection();\r\n } catch (IOException e) {\r\n LOGGER.error(\"unable to download asset: {}\", downloadUrl);\r\n }\r\n } catch (Exception e) {\r\n LOGGER.error(\"ERROR: {}\", e.toString());\r\n }\r\n }\r\n```\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1019/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1019/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/789", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/789/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/789/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/789/events", + "html_url": "https://github.com/hub4j/github-api/issues/789", + "id": 601236800, + "node_id": "MDU6SXNzdWU2MDEyMzY4MDA=", + "number": 789, + "title": "Github is dropping support for HTTP basic auth", + "user": { + "login": "csdev", + "id": 1824428, + "node_id": "MDQ6VXNlcjE4MjQ0Mjg=", + "avatar_url": "https://avatars.githubusercontent.com/u/1824428?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/csdev", + "html_url": "https://github.com/csdev", + "followers_url": "https://api.github.com/users/csdev/followers", + "following_url": "https://api.github.com/users/csdev/following{/other_user}", + "gists_url": "https://api.github.com/users/csdev/gists{/gist_id}", + "starred_url": "https://api.github.com/users/csdev/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/csdev/subscriptions", + "organizations_url": "https://api.github.com/users/csdev/orgs", + "repos_url": "https://api.github.com/users/csdev/repos", + "events_url": "https://api.github.com/users/csdev/events{/privacy}", + "received_events_url": "https://api.github.com/users/csdev/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 17, + "created_at": "2020-04-16T16:41:55Z", + "updated_at": "2020-11-17T01:46:53Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Github is dropping support for basic auth on Nov 13, 2020 (with service brownouts on Sep 30 and Oct 28)\r\nhttps://developer.github.com/changes/2020-02-14-deprecating-password-auth/\r\n\r\nWe should make sure that we support using personal access tokens with the `Authorization: token` header. We may also want to issue deprecation warnings if users continue to use basic auth:\r\nhttps://github.com/github-api/github-api/blob/5c9474d1c891121f11ce9c31b51d42216a8e416f/src/main/java/org/kohsuke/github/GitHubClient.java#L119-L123", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/789/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/789/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/915", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/915/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/915/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/915/events", + "html_url": "https://github.com/hub4j/github-api/issues/915", + "id": 672648458, + "node_id": "MDU6SXNzdWU2NzI2NDg0NTg=", + "number": 915, + "title": "Unable to clone submodules", + "user": { + "login": "saptakniyogi", + "id": 13414332, + "node_id": "MDQ6VXNlcjEzNDE0MzMy", + "avatar_url": "https://avatars.githubusercontent.com/u/13414332?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/saptakniyogi", + "html_url": "https://github.com/saptakniyogi", + "followers_url": "https://api.github.com/users/saptakniyogi/followers", + "following_url": "https://api.github.com/users/saptakniyogi/following{/other_user}", + "gists_url": "https://api.github.com/users/saptakniyogi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/saptakniyogi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/saptakniyogi/subscriptions", + "organizations_url": "https://api.github.com/users/saptakniyogi/orgs", + "repos_url": "https://api.github.com/users/saptakniyogi/repos", + "events_url": "https://api.github.com/users/saptakniyogi/events{/privacy}", + "received_events_url": "https://api.github.com/users/saptakniyogi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2020-08-04T09:29:28Z", + "updated_at": "2020-08-25T13:12:51Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nWhen Github organization scans for repos, it fails if the repo contains submodules with following error:\r\nCaused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `[Lorg.kohsuke.github.GHContent;` out of START_OBJECT token\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Scan Github Org with repos having sub-modules\r\n\r\n**Expected behavior**\r\nScan and clone the sub-modules\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: Windows Server 2016\r\n - Browser: Chrome\r\n - Version 1.115\r\n\r\n**Additional context**\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/915/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/915/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/903", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/903/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/903/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/903/events", + "html_url": "https://github.com/hub4j/github-api/issues/903", + "id": 666484469, + "node_id": "MDU6SXNzdWU2NjY0ODQ0Njk=", + "number": 903, + "title": "Consider using URI Templates instead of constructing url strings", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2020-07-27T18:07:44Z", + "updated_at": "2020-07-27T18:07:50Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Using URI Templates would make it clearer what parts of Requests are supposed to be in the URL and which should be passed as JSON. This would also simplify `GitHubRequest` and `GitHubClient`. \r\n\r\nOne example of a library that could be used: https://github.com/damnhandy/Handy-URI-Templates\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/903/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/903/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/763", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/763/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/763/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/763/events", + "html_url": "https://github.com/hub4j/github-api/issues/763", + "id": 591188016, + "node_id": "MDU6SXNzdWU1OTExODgwMTY=", + "number": 763, + "title": "Add and enforce copyright at the top of all code files", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2020-03-31T15:08:44Z", + "updated_at": "2020-07-17T20:08:43Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/763/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/763/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/881", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/881/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/881/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/881/events", + "html_url": "https://github.com/hub4j/github-api/issues/881", + "id": 652686003, + "node_id": "MDU6SXNzdWU2NTI2ODYwMDM=", + "number": 881, + "title": "Update to handle updated git references api ", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2020-07-07T22:10:07Z", + "updated_at": "2020-07-08T21:43:47Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Version 2.18 and older use this: \r\nhttps://docs.github.com/en/enterprise/2.18/user/rest/reference/git#get-all-references\r\n\r\nVersion 2.19 and new use this: \r\nhttps://docs.github.com/en/rest/reference/git#references\r\n\r\n\r\nSpecifically, getting references is now done using `git/matching-refs` instead of `git/refs`. \r\n\r\nSee #822, #842, #844, #845. Also see #852 for likely feature that needs to be added to make this safe. \r\n\r\nThat said 2.18 will be unsupported after August 2020. Perhaps the right behavior is to try default to the new API and have a switch to enable the old one. \r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/881/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/881/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/347", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/347/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/347/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/347/events", + "html_url": "https://github.com/hub4j/github-api/issues/347", + "id": 211134155, + "node_id": "MDU6SXNzdWUyMTExMzQxNTU=", + "number": 347, + "title": "Get fast issue/pull number from notifications", + "user": { + "login": "rnveach", + "id": 5427943, + "node_id": "MDQ6VXNlcjU0Mjc5NDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rnveach", + "html_url": "https://github.com/rnveach", + "followers_url": "https://api.github.com/users/rnveach/followers", + "following_url": "https://api.github.com/users/rnveach/following{/other_user}", + "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", + "organizations_url": "https://api.github.com/users/rnveach/orgs", + "repos_url": "https://api.github.com/users/rnveach/repos", + "events_url": "https://api.github.com/users/rnveach/events{/privacy}", + "received_events_url": "https://api.github.com/users/rnveach/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2017-03-01T16:28:19Z", + "updated_at": "2020-06-07T21:39:38Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "The only way to get the issue/pull number from notifications is like below:\r\n````\r\n\t\tGitHub github = GitHub.connect();\r\n\r\n\t\tGHNotificationStream stream = github.listNotifications();\r\n\r\n\t\tfor (GHThread t : stream.nonBlocking(true).participating(false).read(true)) {\r\n\t\t\tSystem.out.println((t.getBoundIssue() != null ? t.getBoundIssue().getNumber() : \"\"));\r\n\t\t}\r\n````\r\n\r\nThe problem with this is `getBoundIssue` makes another service call just to get all the information on the issue. I just want the issue number for quick display which is already stored in the `subject.url` but I don't there is no public method to access it.\r\nI think it would be great if there was a simple method like `getIssueNumber` and `getPullNumber`.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/347/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/347/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/589", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/589/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/589/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/589/events", + "html_url": "https://github.com/hub4j/github-api/issues/589", + "id": 516256769, + "node_id": "MDU6SXNzdWU1MTYyNTY3Njk=", + "number": 589, + "title": "Final instances vs Incomplete instances vs Update-in-place", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + }, + { + "id": 1780165359, + "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", + "name": "breaking change", + "color": "b60205", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2019-11-01T17:46:33Z", + "updated_at": "2020-06-07T20:56:37Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "#495 and #496 raise an interesting point. Also #584.\r\n\r\nThis project currently tends to treat instances of data objects as \"final\" - you request an Issue and the instance you requested never changes after that. That instance is a stable snapshot and can be used as a key in a HashSet or Map without fear of it changing. \r\n\r\nWe also have action and update methods on these objects. In general, these methods update the state of the server-side object the instance is based on, but do not change the data in the instance. You call `close()` or `delete()` or one of the `set*` methods and a request is sent to change the object on the server, but the data in the local instance doesn't update to match. This is consistent with the \"final instances\" model but has some problems. There's no batching of updates (each action is another query) and since the local instance is out of date, updates can end up overwriting each other as in #495. The only current workaround is send another request to get a fresh instance for each update. 😱 \r\n\r\nThe `Builder/Updater` pattern added to some objects addresses this by batching updates together and then returning a new instance matching those updates. This solves the problem of stale data but results in verbose `item.update().title('New Title').update()` syntax for single field changes. It does partially unblock update-in-place as `item = item.update().title('New Title').update()`. \r\n\r\nFinally, some objects can be incomplete when first created - either due to their source (partial information provided as part of creating another object) or due to the target only updating on request (pull request mergability is only updated after the first time PR is queried after a new commit is pushed). For these cases, we currently update in place. Do we want to force users to get new instances instead? \r\n\r\nThere's no one right way to do this, but we should look at how to make this behavior consistent across all objects. \r\n\r\nA couple random thought s off hand about this: \r\n* `set*` method naming is misleading - best practice in my understanding is to make `get*` and `set*` methods local and lightweight. Alternative would be to have `update*` methods that actually send updates to the server. \r\n* Create states for the objects and allow the parent objects and the `GitHub` object to create objects in those state. Rather than having updaters for objects, users would get a mutable instance. Possible states for data objects: immutable, immediate mutable, batch mutable. Not sure how the incomplete objects figure into this yet. \r\n\r\n\r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/589/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/589/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/689", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/689/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/689/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/689/events", + "html_url": "https://github.com/hub4j/github-api/issues/689", + "id": 557302663, + "node_id": "MDU6SXNzdWU1NTczMDI2NjM=", + "number": 689, + "title": "Cache corruption fix from #669 not working on Windows", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1686290078, + "node_id": "MDU6TGFiZWwxNjg2MjkwMDc4", + "url": "https://api.github.com/repos/hub4j/github-api/labels/external", + "name": "external", + "color": "a0a0a0", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2020-01-30T06:58:51Z", + "updated_at": "2020-06-07T19:52:27Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "The work around for #669 isn't working on Windows. It appears this may be a bug in Okhttp caching on windows, but it is unclear. https://github.com/github-api/github-api/commit/967512629821b706e8d06ef9b3e57061f397d073", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/689/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/689/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/835", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/835/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/835/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/835/events", + "html_url": "https://github.com/hub4j/github-api/issues/835", + "id": 630566215, + "node_id": "MDU6SXNzdWU2MzA1NjYyMTU=", + "number": 835, + "title": "Add option to take clean snapshots (instead of manual cleaning)", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2020-06-04T07:05:38Z", + "updated_at": "2020-06-06T06:44:33Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "One of the most common scenarios is needing to take a new snapshot for a test. \r\nInstead of making people file the right resources folder, we should make `github.test.takeSnapshot` default to snapshotting in a clean directory and then replacing the existing snapshot files. The current behavior could be moved to `github.test.takeMergedSnapshot` (or some similar name). \r\n\r\nOr allow that value of `github.test.takeSnapshot` to be `merge`? \r\n\r\nThe same should be done with `github.test.useProxy` - it would use only proxy files from a clean directory and we'd add a `github.test.useMergedProxy`. \r\n\r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/835/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/835/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/727", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/727/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/727/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/727/events", + "html_url": "https://github.com/hub4j/github-api/issues/727", + "id": 575738080, + "node_id": "MDU6SXNzdWU1NzU3MzgwODA=", + "number": 727, + "title": "Consider removing @author javadoc, document policy", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + }, + { + "id": 2070644911, + "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", + "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", + "name": "documentation", + "color": "6ee5cb", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2020-03-04T20:15:52Z", + "updated_at": "2020-05-21T19:55:37Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "I saw a number of projects making the choice to remove `@author` tags from their JavaDocs (https://github.com/checkstyle/checkstyle/issues/5738 for example). \r\n\r\nI thought it was a good choice - this is a collaborative project that has been going for years with over a hundred contributors and very few classes have only one contributor. \r\n\r\nI removed all the `@author` javadoc tags thinking this was not a controversial choice. I didn't even send it through PR. That was wrong to do. \r\n\r\n@PauloMigAlmeida asked that we bring them back and I realized that I had not given the change sufficient consideration. I reverted the change in https://github.com/github-api/github-api/commit/a42305dd59f0be426f0c9091748e947f60d76bcd so that we can discuss and do this right.\r\n\r\nPaulo, could you talk about reasons to keep them? Perhaps we can address your concerns with something other that this particular JavaDoc tag? ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/727/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/727/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/178", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/178/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/178/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/178/events", + "html_url": "https://github.com/hub4j/github-api/issues/178", + "id": 68225402, + "node_id": "MDU6SXNzdWU2ODIyNTQwMg==", + "number": 178, + "title": "getIssue() from GHPullRequest object", + "user": { + "login": "KostyaSha", + "id": 231611, + "node_id": "MDQ6VXNlcjIzMTYxMQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/231611?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/KostyaSha", + "html_url": "https://github.com/KostyaSha", + "followers_url": "https://api.github.com/users/KostyaSha/followers", + "following_url": "https://api.github.com/users/KostyaSha/following{/other_user}", + "gists_url": "https://api.github.com/users/KostyaSha/gists{/gist_id}", + "starred_url": "https://api.github.com/users/KostyaSha/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/KostyaSha/subscriptions", + "organizations_url": "https://api.github.com/users/KostyaSha/orgs", + "repos_url": "https://api.github.com/users/KostyaSha/repos", + "events_url": "https://api.github.com/users/KostyaSha/events{/privacy}", + "received_events_url": "https://api.github.com/users/KostyaSha/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2015-04-14T00:18:09Z", + "updated_at": "2020-05-21T00:33:01Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Could such method be added into PR object? Issue and PR content differs and it very inconvenient to do a call through parent like `pr.getRepository().getIssue(pr.getNumber())`\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/178/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/178/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/807", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/807/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/807/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/807/events", + "html_url": "https://github.com/hub4j/github-api/issues/807", + "id": 615125196, + "node_id": "MDU6SXNzdWU2MTUxMjUxOTY=", + "number": 807, + "title": "enterprise apiUrl", + "user": { + "login": "dimmonn", + "id": 6670698, + "node_id": "MDQ6VXNlcjY2NzA2OTg=", + "avatar_url": "https://avatars.githubusercontent.com/u/6670698?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dimmonn", + "html_url": "https://github.com/dimmonn", + "followers_url": "https://api.github.com/users/dimmonn/followers", + "following_url": "https://api.github.com/users/dimmonn/following{/other_user}", + "gists_url": "https://api.github.com/users/dimmonn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dimmonn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dimmonn/subscriptions", + "organizations_url": "https://api.github.com/users/dimmonn/orgs", + "repos_url": "https://api.github.com/users/dimmonn/repos", + "events_url": "https://api.github.com/users/dimmonn/events{/privacy}", + "received_events_url": "https://api.github.com/users/dimmonn/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2020-05-09T08:39:12Z", + "updated_at": "2020-05-18T16:39:48Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "`org.kohsuke.github.GitHubBuilder#fromProperties()` as well as `org.kohsuke.github.GitHubBuilder#fromEnvironment()` doesn't support custom apiUrl", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/807/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/807/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/729", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/729/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/729/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/729/events", + "html_url": "https://github.com/hub4j/github-api/issues/729", + "id": 577305635, + "node_id": "MDU6SXNzdWU1NzczMDU2MzU=", + "number": 729, + "title": "NullPointerException when trying to read file-content because encoding is not set", + "user": { + "login": "centic9", + "id": 548322, + "node_id": "MDQ6VXNlcjU0ODMyMg==", + "avatar_url": "https://avatars.githubusercontent.com/u/548322?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/centic9", + "html_url": "https://github.com/centic9", + "followers_url": "https://api.github.com/users/centic9/followers", + "following_url": "https://api.github.com/users/centic9/following{/other_user}", + "gists_url": "https://api.github.com/users/centic9/gists{/gist_id}", + "starred_url": "https://api.github.com/users/centic9/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/centic9/subscriptions", + "organizations_url": "https://api.github.com/users/centic9/orgs", + "repos_url": "https://api.github.com/users/centic9/repos", + "events_url": "https://api.github.com/users/centic9/events{/privacy}", + "received_events_url": "https://api.github.com/users/centic9/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2020-03-07T09:12:03Z", + "updated_at": "2020-04-21T03:31:46Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nThe test-case below triggers a NullPointerException because since some versions github-api expects \"encoding\" to be set in GHContent always, however it seems sometimes this is not set for some repositories.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Run the unit-test below\r\n2. It fails with NullPointerException\r\n\r\n```\r\n @Test\r\n public void testNullPointerException() throws IOException {\r\n GitHub github = GitHub.connect();\r\n\r\n final PagedSearchIterable list = github.searchContent().\r\n repo(\"Savyonify/cryptApiSet/\").\r\n filename(\"build.gradle\").list();\r\n\r\n for(GHContent match : list) {\r\n System.out.println(\"Reading \" + match.getHtmlUrl());\r\n try (final InputStream stream = match.read()) {\r\n assertNotNull(stream);\r\n }\r\n }\r\n }\r\n```\r\n\r\n**Expected behavior**\r\nI would expect to still be able to read those files.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: Linux\r\n - Browser N/A\r\n - Version 1.95, 1.107, 1.108\r\n\r\n**Additional context**\r\nIt seems github now returns some files as part of search-results which are not existing any more, maybe we can handle these more gracefully?\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/729/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/729/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/748", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/748/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/748/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/748/events", + "html_url": "https://github.com/hub4j/github-api/issues/748", + "id": 583197683, + "node_id": "MDU6SXNzdWU1ODMxOTc2ODM=", + "number": 748, + "title": "GHRepository.getLastCommitStatus() reads all statuses to find last status", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2020-03-17T18:01:15Z", + "updated_at": "2020-04-16T18:54:08Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "\r\nhttps://github.com/github-api/github-api/blob/bccae94c7a740fa7ba297fd6eb2a6782ed156a98/src/main/java/org/kohsuke/github/GHRepository.java#L1771-L1774\r\n\r\nThis is fine for a few pages, but bad beyond three pages. \r\n\r\nThis points to a need for `last()`, `first()`, `count()`, and other methods to be added to `PagedIterable` or better `PagedIterator`. ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/748/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/748/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/788", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/788/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/788/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/788/events", + "html_url": "https://github.com/hub4j/github-api/issues/788", + "id": 600914620, + "node_id": "MDU6SXNzdWU2MDA5MTQ2MjA=", + "number": 788, + "title": "Need support to get \"combined status for a specific ref\"", + "user": { + "login": "prabinB", + "id": 3772520, + "node_id": "MDQ6VXNlcjM3NzI1MjA=", + "avatar_url": "https://avatars.githubusercontent.com/u/3772520?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/prabinB", + "html_url": "https://github.com/prabinB", + "followers_url": "https://api.github.com/users/prabinB/followers", + "following_url": "https://api.github.com/users/prabinB/following{/other_user}", + "gists_url": "https://api.github.com/users/prabinB/gists{/gist_id}", + "starred_url": "https://api.github.com/users/prabinB/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/prabinB/subscriptions", + "organizations_url": "https://api.github.com/users/prabinB/orgs", + "repos_url": "https://api.github.com/users/prabinB/repos", + "events_url": "https://api.github.com/users/prabinB/events{/privacy}", + "received_events_url": "https://api.github.com/users/prabinB/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2020-04-16T10:07:27Z", + "updated_at": "2020-04-16T18:36:25Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Please refer to this githug api - https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref\r\n\r\nCurrently there in the library there is no good way to find the combined status of a ref. I believe support for this end point would be a good use case. ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/788/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/788/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + } + ] +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/8-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/8-search_issues.json new file mode 100644 index 0000000000..21593c4e62 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/8-search_issues.json @@ -0,0 +1,1218 @@ +{ + "total_count": 164, + "incomplete_results": false, + "items": [ + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/772", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/772/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/772/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/772/events", + "html_url": "https://github.com/hub4j/github-api/issues/772", + "id": 593634012, + "node_id": "MDU6SXNzdWU1OTM2MzQwMTI=", + "number": 772, + "title": "GHRepository.getFileContent should give helpful error message when misused", + "user": { + "login": "LorenzNickel", + "id": 29959150, + "node_id": "MDQ6VXNlcjI5OTU5MTUw", + "avatar_url": "https://avatars.githubusercontent.com/u/29959150?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/LorenzNickel", + "html_url": "https://github.com/LorenzNickel", + "followers_url": "https://api.github.com/users/LorenzNickel/followers", + "following_url": "https://api.github.com/users/LorenzNickel/following{/other_user}", + "gists_url": "https://api.github.com/users/LorenzNickel/gists{/gist_id}", + "starred_url": "https://api.github.com/users/LorenzNickel/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/LorenzNickel/subscriptions", + "organizations_url": "https://api.github.com/users/LorenzNickel/orgs", + "repos_url": "https://api.github.com/users/LorenzNickel/repos", + "events_url": "https://api.github.com/users/LorenzNickel/events{/privacy}", + "received_events_url": "https://api.github.com/users/LorenzNickel/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2020-04-03T20:51:52Z", + "updated_at": "2020-04-03T21:13:43Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "# Description\r\nWhen you misuse GHRepository.getFileContent a `com.fasterxml.jackson.databind.exc.MismatchedInputException` is thrown.\r\n\r\n## Reproduce\r\nCreate an authorized instance `Github github` (for example using `new GitHubBuilder().withOAuthToken(token).build();`)\r\n\r\nExecute this:\r\n`gitHub.getRepository(\"github-api/github-api\").getFileContent(\"\");`\r\n\r\nYou should get something like this:\r\n`org.kohsuke.github.HttpException: Server returned HTTP response code: 200, message: '200 OK' for URL: https://api.github.com/repos/github-api/github-api/contents/`\r\n...\r\n`Caused by: java.io.IOException: Failed to deserialize`\r\n...\r\n`Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of 'org.kohsuke.github.GHContent' out of START_ARRAY token\r\n at`\r\n...\r\n\r\n## Fix\r\nPlease throw a a proper exception or redesign your implementation to avoid such errors.\r\n\r\n---\r\n\r\nI'd be really happy if you could fix this, please keep up your great work!", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/772/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/772/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/766", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/766/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/766/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/766/events", + "html_url": "https://github.com/hub4j/github-api/issues/766", + "id": 591464899, + "node_id": "MDU6SXNzdWU1OTE0NjQ4OTk=", + "number": 766, + "title": "Replace `GHCreateRepositoryBuilder`", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + }, + { + "id": 1780165359, + "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", + "name": "breaking change", + "color": "b60205", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2020-03-31T22:08:09Z", + "updated_at": "2020-03-31T22:08:09Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Rename `GHCreateRepositoryBuilder`to `GHRepositoryBuilder`, or perhaps even `GHRepository.Creator` ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/766/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/766/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/749", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/749/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/749/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/749/events", + "html_url": "https://github.com/hub4j/github-api/issues/749", + "id": 583217841, + "node_id": "MDU6SXNzdWU1ODMyMTc4NDE=", + "number": 749, + "title": "PagedSearchIterable relies on cached result", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2020-03-17T18:35:53Z", + "updated_at": "2020-03-17T19:43:17Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "The `populate()` method depends on `adapt()`. The Iterator created in `adapt()` loads a result, but never refreshes it: \r\nhttps://github.com/github-api/github-api/blob/bccae94c7a740fa7ba297fd6eb2a6782ed156a98/src/main/java/org/kohsuke/github/PagedSearchIterable.java#L91-L93\r\n\r\nThis means that the `getTotalCount()` can become out of sync from iterators or actual search results.\r\n\r\nhttps://github.com/github-api/github-api/blob/bccae94c7a740fa7ba297fd6eb2a6782ed156a98/src/main/java/org/kohsuke/github/PagedSearchIterable.java#L48-L50\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/749/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/749/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/445", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/445/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/445/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/445/events", + "html_url": "https://github.com/hub4j/github-api/issues/445", + "id": 338893171, + "node_id": "MDU6SXNzdWUzMzg4OTMxNzE=", + "number": 445, + "title": "No API for getting the createdAt and updatedAt for GHContent", + "user": { + "login": "umesh9794", + "id": 7439619, + "node_id": "MDQ6VXNlcjc0Mzk2MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/7439619?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/umesh9794", + "html_url": "https://github.com/umesh9794", + "followers_url": "https://api.github.com/users/umesh9794/followers", + "following_url": "https://api.github.com/users/umesh9794/following{/other_user}", + "gists_url": "https://api.github.com/users/umesh9794/gists{/gist_id}", + "starred_url": "https://api.github.com/users/umesh9794/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/umesh9794/subscriptions", + "organizations_url": "https://api.github.com/users/umesh9794/orgs", + "repos_url": "https://api.github.com/users/umesh9794/repos", + "events_url": "https://api.github.com/users/umesh9794/events{/privacy}", + "received_events_url": "https://api.github.com/users/umesh9794/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2018-07-06T10:45:18Z", + "updated_at": "2020-03-06T02:28:14Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "This is more like a feature request rether an issue. \r\n\r\n`GHContent` has no methods to expose the `createdAt` and `updatedAt` for a file content. I can understand its bit cumbersome to get these details but how about exposing the commit history from where we can get the first and latest commit timestamps? ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/445/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/445/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/599", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/599/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/599/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/599/events", + "html_url": "https://github.com/hub4j/github-api/issues/599", + "id": 519749895, + "node_id": "MDU6SXNzdWU1MTk3NDk4OTU=", + "number": 599, + "title": "Replace `wrapUp` and `wrap()` methods with `@JacksonInject`", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2019-11-08T04:59:33Z", + "updated_at": "2020-03-06T02:21:51Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "This is very much a code smells issue, not a user facing feature. \r\n\r\nThere's quite a bit of code and complexity devoted to added `root` references to objects after they are received. I've thought about various class structures to clean the up, but really the right thing to do seems to be using the `@JacksonInject` annotation. We'd add the `root` instance to the mapper when reading and let the injector handle the assignment. \r\n\r\nSee https://fasterxml.github.io/jackson-databind/javadoc/2.9/com/fasterxml/jackson/databind/ObjectMapper.html#reader-com.fasterxml.jackson.databind.InjectableValues-\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/599/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/599/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/699", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/699/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/699/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/699/events", + "html_url": "https://github.com/hub4j/github-api/issues/699", + "id": 566052912, + "node_id": "MDU6SXNzdWU1NjYwNTI5MTI=", + "number": 699, + "title": "Remove any unneeded `with` methods from `Requester`", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2020-02-17T04:45:34Z", + "updated_at": "2020-02-23T03:17:33Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "From https://github.com/github-api/github-api/pull/697#discussion_r379932880\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/699/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/699/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/700", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/700/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/700/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/700/events", + "html_url": "https://github.com/hub4j/github-api/issues/700", + "id": 566056369, + "node_id": "MDU6SXNzdWU1NjYwNTYzNjk=", + "number": 700, + "title": "Finish moving all full URL setting to `setRawUrlPath` and change `withUrlPath` to not require starting `/`", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2020-02-17T04:58:21Z", + "updated_at": "2020-02-21T23:57:37Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "https://github.com/github-api/github-api/pull/697#discussion_r379982558\r\n\r\nThis will require looking at each call to `withUrlPath` to determine if it is passing a tail URL (starting with \"/\") or passing a full url (starting with `http`). \r\n\r\nOh, look here's one: \r\nhttps://github.com/github-api/github-api/blob/ff3136df7069d22d937daa8f2cddc357c777e07e/src/main/java/org/kohsuke/github/GHBranch.java#L104\r\n\r\nThere more in that class as well, but there are no tests for a number of those methods. \r\n\r\nSo, each case of this needs a test written to show it works and then change to use `setRawUrlPath`. Finally, when we should block `withUrlPath` from accepting full urls. ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/700/reactions", + "total_count": 2, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 2, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/700/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/702", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/702/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/702/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/702/events", + "html_url": "https://github.com/hub4j/github-api/issues/702", + "id": 566517856, + "node_id": "MDU6SXNzdWU1NjY1MTc4NTY=", + "number": 702, + "title": "Rename `PagedIterable` and `PagedIterator` to `PageContentsIterable` and `PageContentsIterator`", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + }, + { + "id": 1780165359, + "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", + "name": "breaking change", + "color": "b60205", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2020-02-17T21:07:31Z", + "updated_at": "2020-02-17T21:09:48Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "This can be partially completed in a non-breaking way by moving the implementation to `PageContentsIterable` and having `PagedIterable` inherit from it. But ultimately it will require API changes. ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/702/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/702/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/681", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/681/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/681/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/681/events", + "html_url": "https://github.com/hub4j/github-api/issues/681", + "id": 555087416, + "node_id": "MDU6SXNzdWU1NTUwODc0MTY=", + "number": 681, + "title": "GHPullRequest for more than one Repo", + "user": { + "login": "namanbada0606", + "id": 49596631, + "node_id": "MDQ6VXNlcjQ5NTk2NjMx", + "avatar_url": "https://avatars.githubusercontent.com/u/49596631?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/namanbada0606", + "html_url": "https://github.com/namanbada0606", + "followers_url": "https://api.github.com/users/namanbada0606/followers", + "following_url": "https://api.github.com/users/namanbada0606/following{/other_user}", + "gists_url": "https://api.github.com/users/namanbada0606/gists{/gist_id}", + "starred_url": "https://api.github.com/users/namanbada0606/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/namanbada0606/subscriptions", + "organizations_url": "https://api.github.com/users/namanbada0606/orgs", + "repos_url": "https://api.github.com/users/namanbada0606/repos", + "events_url": "https://api.github.com/users/namanbada0606/events{/privacy}", + "received_events_url": "https://api.github.com/users/namanbada0606/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2020-01-25T13:47:20Z", + "updated_at": "2020-01-28T20:48:40Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "**Describe the bug**\r\nFirstly wanted to say BIG THANK YOU for this great library, it's really my team a big way. \r\n\r\nContext:\r\nClass GHPullRequest currently handles for one repo to pull PR, how do I leverage the same for more than one repo? Is this a currently limited to ONE ? \r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n\r\nclone https://github.com/sebkur/github-cli\r\n\r\n./gradlew clean create\r\n\r\n./scripts/hubcli list-pull-requests \r\n\r\n\r\n\r\n**Expected behavior**\r\nWe should require more than one repo\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: MAC\r\n - Browser CHROME\r\n - Version 73\r\n\r\n\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/681/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/681/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/668", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/668/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/668/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/668/events", + "html_url": "https://github.com/hub4j/github-api/issues/668", + "id": 551035485, + "node_id": "MDU6SXNzdWU1NTEwMzU0ODU=", + "number": 668, + "title": "Check performance and behavior of ReflectionToStringBuilder ", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2020-01-16T20:26:10Z", + "updated_at": "2020-01-16T20:26:10Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/668/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/668/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/632", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/632/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/632/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/632/events", + "html_url": "https://github.com/hub4j/github-api/issues/632", + "id": 532081873, + "node_id": "MDU6SXNzdWU1MzIwODE4NzM=", + "number": 632, + "title": "Branch Protection Pattern", + "user": { + "login": "inidona", + "id": 2903923, + "node_id": "MDQ6VXNlcjI5MDM5MjM=", + "avatar_url": "https://avatars.githubusercontent.com/u/2903923?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/inidona", + "html_url": "https://github.com/inidona", + "followers_url": "https://api.github.com/users/inidona/followers", + "following_url": "https://api.github.com/users/inidona/following{/other_user}", + "gists_url": "https://api.github.com/users/inidona/gists{/gist_id}", + "starred_url": "https://api.github.com/users/inidona/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/inidona/subscriptions", + "organizations_url": "https://api.github.com/users/inidona/orgs", + "repos_url": "https://api.github.com/users/inidona/repos", + "events_url": "https://api.github.com/users/inidona/events{/privacy}", + "received_events_url": "https://api.github.com/users/inidona/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2019-12-03T15:51:10Z", + "updated_at": "2019-12-03T16:05:47Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "In GitHub UI i can create an Branch Protection with an Pattern.\r\nSo the branches not exists in this moment in the repo and will be protected after it created.\r\n\r\ni studied your api but found only the protection of real existing branches.\r\n\r\ni am right, and if is it possible to enhance the api ? Mayby with an String contructor in GHBranchProtectionBuilder ?\r\n\r\nthanks\r\nandreas", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/632/reactions", + "total_count": 2, + "+1": 2, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/632/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/495", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/495/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/495/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/495/events", + "html_url": "https://github.com/hub4j/github-api/issues/495", + "id": 409299090, + "node_id": "MDU6SXNzdWU0MDkyOTkwOTA=", + "number": 495, + "title": "Unable to replace a label in an issue because GHIssue.labels list is not updated", + "user": { + "login": "rmetzger", + "id": 89049, + "node_id": "MDQ6VXNlcjg5MDQ5", + "avatar_url": "https://avatars.githubusercontent.com/u/89049?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rmetzger", + "html_url": "https://github.com/rmetzger", + "followers_url": "https://api.github.com/users/rmetzger/followers", + "following_url": "https://api.github.com/users/rmetzger/following{/other_user}", + "gists_url": "https://api.github.com/users/rmetzger/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rmetzger/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rmetzger/subscriptions", + "organizations_url": "https://api.github.com/users/rmetzger/orgs", + "repos_url": "https://api.github.com/users/rmetzger/repos", + "events_url": "https://api.github.com/users/rmetzger/events{/privacy}", + "received_events_url": "https://api.github.com/users/rmetzger/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + }, + { + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2019-02-12T13:31:27Z", + "updated_at": "2019-11-07T23:17:02Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Consider the following code:\r\n\r\n```java\r\nGHRepository repo = gitHub.getRepository(\"myacc/myrepo\");\r\nGHIssue issue = repo.getIssue(4);\r\n// assume \"test\" exists\r\nissue.removeLabels(\"test\");\r\nissue.addLabels(\"test1\");\r\n```\r\n\r\nExpected result: Issue `#4` has one label: `test1`\r\nActual result: Issue `#4` has two labels: `test`, `test1`\r\n\r\nCause:\r\nIn `GHIssue`, the `labels` field is not updated when the `setLabels(String... labels)` method is called. `addLabels(\"test1\")` calls `getLabels()` in `_addLabels()`, which returns the cached `GHIssue.list` field, still containing the `test` label.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/495/reactions", + "total_count": 2, + "+1": 2, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/495/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/440", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/440/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/440/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/440/events", + "html_url": "https://github.com/hub4j/github-api/issues/440", + "id": 330763806, + "node_id": "MDU6SXNzdWUzMzA3NjM4MDY=", + "number": 440, + "title": "Unable to add user as contributor in organization repository", + "user": { + "login": "ncoop57", + "id": 7613470, + "node_id": "MDQ6VXNlcjc2MTM0NzA=", + "avatar_url": "https://avatars.githubusercontent.com/u/7613470?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ncoop57", + "html_url": "https://github.com/ncoop57", + "followers_url": "https://api.github.com/users/ncoop57/followers", + "following_url": "https://api.github.com/users/ncoop57/following{/other_user}", + "gists_url": "https://api.github.com/users/ncoop57/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ncoop57/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ncoop57/subscriptions", + "organizations_url": "https://api.github.com/users/ncoop57/orgs", + "repos_url": "https://api.github.com/users/ncoop57/repos", + "events_url": "https://api.github.com/users/ncoop57/events{/privacy}", + "received_events_url": "https://api.github.com/users/ncoop57/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2018-06-08T18:43:54Z", + "updated_at": "2019-11-07T23:00:54Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "Hi, I asked a question like this on stack overflow which you can find [here](https://stackoverflow.com/questions/50633315/how-do-you-add-outside-collaborators-to-repositories-in-your-organization-using), but had no luck with anyone answering it, so, I thought I'd bring my question here.\r\n\r\nI am trying to add a special user to all repositories in an organization automatically as a contributor, not a team. It must be a contributor because I have a separate program that automatically accepts repository invites but does not work with team invites so I need a solution that does it as a contributor not a team. When I attempt this with the following code:\r\n\r\n`GHCreateRepositoryBuilder builder = this.organization.createRepository(this.prefix + i);\r\nGHRepository repo = builder.create();\r\nrepo.addCollaborators(github.getUser(\"vcdep\"));\r\nrepositories.add(repo);`\r\n\r\nI get the following error:\r\n\r\n`Caused by: java.io.IOException: Operation not applicable to a repository owned by someone else: TestOrganizationForDevOps\r\nat org.kohsuke.github.GHRepository.verifyMine(GHRepository.java:1097)\r\nat org.kohsuke.github.GHRepository.modifyCollaborators(GHRepository.java:507)\r\nat org.kohsuke.github.GHRepository.addCollaborators(GHRepository.java:495)\r\nat org.kohsuke.github.GHRepository.addCollaborators(GHRepository.java:491)\r\nat wizard.GitHubController.createRepos(GitHubController.java:94)\r\nat wizard.Controller.onButtonClickedFinish(Controller.java:260)\r\n... 58 more`\r\n\r\nI am using a personal token which has all of the permissions given to it and I am using the account which owns and created the organization along with the repositories, however, I am still getting that error. I even tried adding the user as a member to the organization, but even that didn't work.\r\n\r\nI guess what I am really wondering is if this is expected behavior or if there is something I am missing and if so what is the solution.\r\n\r\nThank you for your time and consideration.", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/440/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/440/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/577", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/577/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/577/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/577/events", + "html_url": "https://github.com/hub4j/github-api/issues/577", + "id": 513638744, + "node_id": "MDU6SXNzdWU1MTM2Mzg3NDQ=", + "number": 577, + "title": "Add getById() method to PagedIterable", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2019-10-29T01:16:40Z", + "updated_at": "2019-11-07T22:48:43Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "sub_issues_summary": { + "total": 0, + "completed": 0, + "percent_completed": 0 + }, + "issue_dependencies_summary": { + "blocked_by": 0, + "total_blocked_by": 0, + "blocking": 0, + "total_blocking": 0 + }, + "body": "There are a large number cases where an iterable API endpoint also offers query options for the same url or adding an id to the end of the URL to get an individual (see Collaborators - #576). It seems like it would be better to have a consistent way of accessing this kind of endpoint when it exists. ", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/577/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/577/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + } + ] +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/1-user.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/1-user.json new file mode 100644 index 0000000000..4421d0aed2 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/1-user.json @@ -0,0 +1,48 @@ +{ + "id": "00e67418-a035-401d-b3d3-457fc73ffd0c", + "name": "user", + "request": { + "url": "/user", + "method": "GET", + "headers": { + "Accept": { + "equalTo": "application/vnd.github+json" + } + } + }, + "response": { + "status": 200, + "bodyFileName": "1-user.json", + "headers": { + "Date": "Sun, 25 Jan 2026 19:36:34 GMT", + "Content-Type": "application/json; charset=utf-8", + "Cache-Control": "private, max-age=60, s-maxage=60", + "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", + "ETag": "W/\"15d7e1ad92a3639b979fc55254902e63ee0bfa5c8f6766990bf989044d491ce1\"", + "Last-Modified": "Sat, 24 Jan 2026 22:07:12 GMT", + "X-OAuth-Scopes": "repo", + "X-Accepted-OAuth-Scopes": "", + "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", + "X-GitHub-Media-Type": "github.v3; format=json", + "x-github-api-version-selected": "2022-11-28", + "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", + "Access-Control-Allow-Origin": "*", + "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options": "deny", + "X-Content-Type-Options": "nosniff", + "X-XSS-Protection": "0", + "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", + "Content-Security-Policy": "default-src 'none'", + "Server": "github.com", + "X-RateLimit-Limit": "5000", + "X-RateLimit-Remaining": "4976", + "X-RateLimit-Reset": "1769372833", + "X-RateLimit-Used": "24", + "X-RateLimit-Resource": "core", + "X-GitHub-Request-Id": "F6F4:EDA44:64803E0:55D240F:697670C1" + } + }, + "uuid": "00e67418-a035-401d-b3d3-457fc73ffd0c", + "persistent": true, + "insertionIndex": 1 +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/2-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/2-search_issues.json new file mode 100644 index 0000000000..7709503660 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/2-search_issues.json @@ -0,0 +1,50 @@ +{ + "id": "09a5cfec-10dd-450e-bc93-7733e3901b45", + "name": "search_issues", + "request": { + "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aopen", + "method": "GET", + "headers": { + "Accept": { + "equalTo": "application/vnd.github+json" + } + } + }, + "response": { + "status": 200, + "bodyFileName": "2-search_issues.json", + "headers": { + "Date": "Sun, 25 Jan 2026 19:36:35 GMT", + "Content-Type": "application/json; charset=utf-8", + "Cache-Control": "no-cache", + "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", + "X-OAuth-Scopes": "repo", + "X-Accepted-OAuth-Scopes": "", + "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", + "X-GitHub-Media-Type": "github.v3; format=json", + "x-github-api-version-selected": "2022-11-28", + "X-RateLimit-Limit": "30", + "X-RateLimit-Remaining": "29", + "X-RateLimit-Reset": "1769369855", + "X-RateLimit-Used": "1", + "X-RateLimit-Resource": "search", + "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", + "Access-Control-Allow-Origin": "*", + "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options": "deny", + "X-Content-Type-Options": "nosniff", + "X-XSS-Protection": "0", + "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", + "Content-Security-Policy": "default-src 'none'", + "Server": "github.com", + "X-GitHub-Request-Id": "F6F6:1DC7F0:634116F:547C64E:697670C2", + "Link": "; rel=\"next\", ; rel=\"last\"" + } + }, + "uuid": "09a5cfec-10dd-450e-bc93-7733e3901b45", + "persistent": true, + "scenarioName": "scenario-1-search-issues", + "requiredScenarioState": "Started", + "newScenarioState": "scenario-1-search-issues-2", + "insertionIndex": 2 +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/3-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/3-search_issues.json new file mode 100644 index 0000000000..9424b7c0b2 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/3-search_issues.json @@ -0,0 +1,49 @@ +{ + "id": "d4bbc619-a33f-41de-8d54-006f338708b3", + "name": "search_issues", + "request": { + "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aopen", + "method": "GET", + "headers": { + "Accept": { + "equalTo": "application/vnd.github+json" + } + } + }, + "response": { + "status": 200, + "bodyFileName": "3-search_issues.json", + "headers": { + "Date": "Sun, 25 Jan 2026 19:36:35 GMT", + "Content-Type": "application/json; charset=utf-8", + "Cache-Control": "no-cache", + "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", + "X-OAuth-Scopes": "repo", + "X-Accepted-OAuth-Scopes": "", + "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", + "X-GitHub-Media-Type": "github.v3; format=json", + "x-github-api-version-selected": "2022-11-28", + "X-RateLimit-Limit": "30", + "X-RateLimit-Remaining": "28", + "X-RateLimit-Reset": "1769369855", + "X-RateLimit-Used": "2", + "X-RateLimit-Resource": "search", + "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", + "Access-Control-Allow-Origin": "*", + "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options": "deny", + "X-Content-Type-Options": "nosniff", + "X-XSS-Protection": "0", + "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", + "Content-Security-Policy": "default-src 'none'", + "Server": "github.com", + "X-GitHub-Request-Id": "F6F7:46DF2:72F8216:643EB99:697670C3", + "Link": "; rel=\"next\", ; rel=\"last\"" + } + }, + "uuid": "d4bbc619-a33f-41de-8d54-006f338708b3", + "persistent": true, + "scenarioName": "scenario-1-search-issues", + "requiredScenarioState": "scenario-1-search-issues-2", + "insertionIndex": 3 +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/4-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/4-search_issues.json new file mode 100644 index 0000000000..8daf131dca --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/4-search_issues.json @@ -0,0 +1,47 @@ +{ + "id": "c077f6a2-96b2-4dcb-8bc6-b41912fcab66", + "name": "search_issues", + "request": { + "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aopen&page=2", + "method": "GET", + "headers": { + "Accept": { + "equalTo": "application/vnd.github+json" + } + } + }, + "response": { + "status": 200, + "bodyFileName": "4-search_issues.json", + "headers": { + "Date": "Sun, 25 Jan 2026 19:36:36 GMT", + "Content-Type": "application/json; charset=utf-8", + "Cache-Control": "no-cache", + "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", + "X-OAuth-Scopes": "repo", + "X-Accepted-OAuth-Scopes": "", + "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", + "X-GitHub-Media-Type": "github.v3; format=json", + "x-github-api-version-selected": "2022-11-28", + "X-RateLimit-Limit": "30", + "X-RateLimit-Remaining": "27", + "X-RateLimit-Reset": "1769369855", + "X-RateLimit-Used": "3", + "X-RateLimit-Resource": "search", + "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", + "Access-Control-Allow-Origin": "*", + "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options": "deny", + "X-Content-Type-Options": "nosniff", + "X-XSS-Protection": "0", + "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", + "Content-Security-Policy": "default-src 'none'", + "Server": "github.com", + "X-GitHub-Request-Id": "F6F8:1EE296:6025D5B:51B5929:697670C4", + "Link": "; rel=\"prev\", ; rel=\"next\", ; rel=\"last\", ; rel=\"first\"" + } + }, + "uuid": "c077f6a2-96b2-4dcb-8bc6-b41912fcab66", + "persistent": true, + "insertionIndex": 4 +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/5-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/5-search_issues.json new file mode 100644 index 0000000000..bf0fddb7d7 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/5-search_issues.json @@ -0,0 +1,47 @@ +{ + "id": "a96ac4a9-7011-42d8-ad31-8c9127180a1f", + "name": "search_issues", + "request": { + "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aopen&page=3", + "method": "GET", + "headers": { + "Accept": { + "equalTo": "application/vnd.github+json" + } + } + }, + "response": { + "status": 200, + "bodyFileName": "5-search_issues.json", + "headers": { + "Date": "Sun, 25 Jan 2026 19:36:37 GMT", + "Content-Type": "application/json; charset=utf-8", + "Cache-Control": "no-cache", + "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", + "X-OAuth-Scopes": "repo", + "X-Accepted-OAuth-Scopes": "", + "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", + "X-GitHub-Media-Type": "github.v3; format=json", + "x-github-api-version-selected": "2022-11-28", + "X-RateLimit-Limit": "30", + "X-RateLimit-Remaining": "26", + "X-RateLimit-Reset": "1769369855", + "X-RateLimit-Used": "4", + "X-RateLimit-Resource": "search", + "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", + "Access-Control-Allow-Origin": "*", + "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options": "deny", + "X-Content-Type-Options": "nosniff", + "X-XSS-Protection": "0", + "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", + "Content-Security-Policy": "default-src 'none'", + "Server": "github.com", + "X-GitHub-Request-Id": "F6F9:46DF2:72F8B03:643F337:697670C5", + "Link": "; rel=\"prev\", ; rel=\"next\", ; rel=\"last\", ; rel=\"first\"" + } + }, + "uuid": "a96ac4a9-7011-42d8-ad31-8c9127180a1f", + "persistent": true, + "insertionIndex": 5 +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/6-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/6-search_issues.json new file mode 100644 index 0000000000..499e2e3430 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/6-search_issues.json @@ -0,0 +1,47 @@ +{ + "id": "47d78700-be83-47c9-8fee-d2bbc1d4b878", + "name": "search_issues", + "request": { + "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aopen&page=4", + "method": "GET", + "headers": { + "Accept": { + "equalTo": "application/vnd.github+json" + } + } + }, + "response": { + "status": 200, + "bodyFileName": "6-search_issues.json", + "headers": { + "Date": "Sun, 25 Jan 2026 19:36:38 GMT", + "Content-Type": "application/json; charset=utf-8", + "Cache-Control": "no-cache", + "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", + "X-OAuth-Scopes": "repo", + "X-Accepted-OAuth-Scopes": "", + "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", + "X-GitHub-Media-Type": "github.v3; format=json", + "x-github-api-version-selected": "2022-11-28", + "X-RateLimit-Limit": "30", + "X-RateLimit-Remaining": "25", + "X-RateLimit-Reset": "1769369855", + "X-RateLimit-Used": "5", + "X-RateLimit-Resource": "search", + "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", + "Access-Control-Allow-Origin": "*", + "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options": "deny", + "X-Content-Type-Options": "nosniff", + "X-XSS-Protection": "0", + "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", + "Content-Security-Policy": "default-src 'none'", + "Server": "github.com", + "X-GitHub-Request-Id": "F6FA:25DA4D:607698C:51F2ADF:697670C6", + "Link": "; rel=\"prev\", ; rel=\"next\", ; rel=\"last\", ; rel=\"first\"" + } + }, + "uuid": "47d78700-be83-47c9-8fee-d2bbc1d4b878", + "persistent": true, + "insertionIndex": 6 +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/7-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/7-search_issues.json new file mode 100644 index 0000000000..3e2dbb362d --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/7-search_issues.json @@ -0,0 +1,47 @@ +{ + "id": "6fe37716-effc-487e-b7c1-44773e91935f", + "name": "search_issues", + "request": { + "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aopen&page=5", + "method": "GET", + "headers": { + "Accept": { + "equalTo": "application/vnd.github+json" + } + } + }, + "response": { + "status": 200, + "bodyFileName": "7-search_issues.json", + "headers": { + "Date": "Sun, 25 Jan 2026 19:36:39 GMT", + "Content-Type": "application/json; charset=utf-8", + "Cache-Control": "no-cache", + "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", + "X-OAuth-Scopes": "repo", + "X-Accepted-OAuth-Scopes": "", + "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", + "X-GitHub-Media-Type": "github.v3; format=json", + "x-github-api-version-selected": "2022-11-28", + "X-RateLimit-Limit": "30", + "X-RateLimit-Remaining": "24", + "X-RateLimit-Reset": "1769369855", + "X-RateLimit-Used": "6", + "X-RateLimit-Resource": "search", + "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", + "Access-Control-Allow-Origin": "*", + "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options": "deny", + "X-Content-Type-Options": "nosniff", + "X-XSS-Protection": "0", + "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", + "Content-Security-Policy": "default-src 'none'", + "Server": "github.com", + "X-GitHub-Request-Id": "F6FC:11A506:6459E58:5584095:697670C6", + "Link": "; rel=\"prev\", ; rel=\"next\", ; rel=\"last\", ; rel=\"first\"" + } + }, + "uuid": "6fe37716-effc-487e-b7c1-44773e91935f", + "persistent": true, + "insertionIndex": 7 +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/8-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/8-search_issues.json new file mode 100644 index 0000000000..ad9d210802 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/8-search_issues.json @@ -0,0 +1,47 @@ +{ + "id": "fde8ed37-9d69-4220-9377-deed5fbf3d11", + "name": "search_issues", + "request": { + "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aopen&page=6", + "method": "GET", + "headers": { + "Accept": { + "equalTo": "application/vnd.github+json" + } + } + }, + "response": { + "status": 200, + "bodyFileName": "8-search_issues.json", + "headers": { + "Date": "Sun, 25 Jan 2026 19:36:40 GMT", + "Content-Type": "application/json; charset=utf-8", + "Cache-Control": "no-cache", + "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", + "X-OAuth-Scopes": "repo", + "X-Accepted-OAuth-Scopes": "", + "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", + "X-GitHub-Media-Type": "github.v3; format=json", + "x-github-api-version-selected": "2022-11-28", + "X-RateLimit-Limit": "30", + "X-RateLimit-Remaining": "23", + "X-RateLimit-Reset": "1769369855", + "X-RateLimit-Used": "7", + "X-RateLimit-Resource": "search", + "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", + "Access-Control-Allow-Origin": "*", + "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options": "deny", + "X-Content-Type-Options": "nosniff", + "X-XSS-Protection": "0", + "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", + "Content-Security-Policy": "default-src 'none'", + "Server": "github.com", + "X-GitHub-Request-Id": "F6FD:275471:6312BA7:544A3C3:697670C7", + "Link": "; rel=\"prev\", ; rel=\"first\"" + } + }, + "uuid": "fde8ed37-9d69-4220-9377-deed5fbf3d11", + "persistent": true, + "insertionIndex": 8 +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/1-user.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/1-user.json new file mode 100644 index 0000000000..fbc5eae788 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/1-user.json @@ -0,0 +1,36 @@ +{ + "login": "Anonycoders", + "id": 40047636, + "node_id": "MDQ6VXNlcjQwMDQ3NjM2", + "avatar_url": "https://avatars.githubusercontent.com/u/40047636?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Anonycoders", + "html_url": "https://github.com/Anonycoders", + "followers_url": "https://api.github.com/users/Anonycoders/followers", + "following_url": "https://api.github.com/users/Anonycoders/following{/other_user}", + "gists_url": "https://api.github.com/users/Anonycoders/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Anonycoders/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Anonycoders/subscriptions", + "organizations_url": "https://api.github.com/users/Anonycoders/orgs", + "repos_url": "https://api.github.com/users/Anonycoders/repos", + "events_url": "https://api.github.com/users/Anonycoders/events{/privacy}", + "received_events_url": "https://api.github.com/users/Anonycoders/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false, + "name": "Sorena Sarabadani", + "company": "@Adevinta", + "blog": "", + "location": "Berlin, Germany", + "email": "sorena.sarabadani@gmail.com", + "hireable": null, + "bio": "Ex-Shopifyer - Adevinta/Kleinanzeigen", + "twitter_username": "sorena_s", + "notification_email": "sorena.sarabadani@gmail.com", + "public_repos": 12, + "public_gists": 0, + "followers": 38, + "following": 4, + "created_at": "2018-06-08T02:07:15Z", + "updated_at": "2026-01-24T22:07:12Z" +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/2-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/2-search_issues.json new file mode 100644 index 0000000000..63a6d51e2d --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/2-search_issues.json @@ -0,0 +1,1239 @@ +{ + "total_count": 16, + "incomplete_results": false, + "items": [ + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2185", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2185/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2185/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2185/events", + "html_url": "https://github.com/hub4j/github-api/pull/2185", + "id": 3853746359, + "node_id": "PR_kwDOAAlq-s6_QWo_", + "number": 2185, + "title": "feat: paginated gh pull request query builder", + "user": { + "login": "Anonycoders", + "id": 40047636, + "node_id": "MDQ6VXNlcjQwMDQ3NjM2", + "avatar_url": "https://avatars.githubusercontent.com/u/40047636?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Anonycoders", + "html_url": "https://github.com/Anonycoders", + "followers_url": "https://api.github.com/users/Anonycoders/followers", + "following_url": "https://api.github.com/users/Anonycoders/following{/other_user}", + "gists_url": "https://api.github.com/users/Anonycoders/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Anonycoders/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Anonycoders/subscriptions", + "organizations_url": "https://api.github.com/users/Anonycoders/orgs", + "repos_url": "https://api.github.com/users/Anonycoders/repos", + "events_url": "https://api.github.com/users/Anonycoders/events{/privacy}", + "received_events_url": "https://api.github.com/users/Anonycoders/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2026-01-25T19:29:46Z", + "updated_at": "2026-01-25T19:29:46Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2185", + "html_url": "https://github.com/hub4j/github-api/pull/2185", + "diff_url": "https://github.com/hub4j/github-api/pull/2185.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2185.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\nFixes #2032 - (`GHPullRequestQueryBuilder` doesn't seem to support `pageSize(int)` but `GHIssueQueryBuilder` does)\r\n\r\nhttps://docs.github.com/en/rest/pulls/pulls?apiVersion=2022-11-28#list-pull-requests\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2185/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2185/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2184", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2184/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2184/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2184/events", + "html_url": "https://github.com/hub4j/github-api/pull/2184", + "id": 3852498861, + "node_id": "PR_kwDOAAlq-s6_MgOl", + "number": 2184, + "title": "feat: add GHPullRequest.markReadyForReview for draft PRs", + "user": { + "login": "Anonycoders", + "id": 40047636, + "node_id": "MDQ6VXNlcjQwMDQ3NjM2", + "avatar_url": "https://avatars.githubusercontent.com/u/40047636?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Anonycoders", + "html_url": "https://github.com/Anonycoders", + "followers_url": "https://api.github.com/users/Anonycoders/followers", + "following_url": "https://api.github.com/users/Anonycoders/following{/other_user}", + "gists_url": "https://api.github.com/users/Anonycoders/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Anonycoders/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Anonycoders/subscriptions", + "organizations_url": "https://api.github.com/users/Anonycoders/orgs", + "repos_url": "https://api.github.com/users/Anonycoders/repos", + "events_url": "https://api.github.com/users/Anonycoders/events{/privacy}", + "received_events_url": "https://api.github.com/users/Anonycoders/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-01-25T03:46:29Z", + "updated_at": "2026-01-25T04:32:25Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2184", + "html_url": "https://github.com/hub4j/github-api/pull/2184", + "diff_url": "https://github.com/hub4j/github-api/pull/2184.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2184.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\nThis change adds new functionality to allow `marking draft PRs as ready for review` using GraphQL as it's not supported by REST.\r\n\r\nhttps://docs.github.com/en/graphql/reference/mutations#markpullrequestreadyforreview\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2184/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2184/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2183", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/events", + "html_url": "https://github.com/hub4j/github-api/pull/2183", + "id": 3852488828, + "node_id": "PR_kwDOAAlq-s6_MeOS", + "number": 2183, + "title": "Move to Jackson 3 - Phase 2", + "user": { + "login": "pvillard31", + "id": 11541012, + "node_id": "MDQ6VXNlcjExNTQxMDEy", + "avatar_url": "https://avatars.githubusercontent.com/u/11541012?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pvillard31", + "html_url": "https://github.com/pvillard31", + "followers_url": "https://api.github.com/users/pvillard31/followers", + "following_url": "https://api.github.com/users/pvillard31/following{/other_user}", + "gists_url": "https://api.github.com/users/pvillard31/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pvillard31/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pvillard31/subscriptions", + "organizations_url": "https://api.github.com/users/pvillard31/orgs", + "repos_url": "https://api.github.com/users/pvillard31/repos", + "events_url": "https://api.github.com/users/pvillard31/events{/privacy}", + "received_events_url": "https://api.github.com/users/pvillard31/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2026-01-25T03:36:00Z", + "updated_at": "2026-01-25T03:36:00Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2183", + "html_url": "https://github.com/hub4j/github-api/pull/2183", + "diff_url": "https://github.com/hub4j/github-api/pull/2183.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2183.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\nSee #2173 for the initial PR and associated discussion.\r\n\r\nThis PR is the follow-up of #2182.\r\n\r\n- Design GitHubJackson interface with methods for reading/writing JSON Implement GitHubJackson2 and GitHubJackson3\r\n- Create DefaultGitHubJackson factory with programmatic selection\r\n- Create GitHubJacksonException wrapper classes\r\n- Add GitHubBuilder.withJackson() for configuring Jackson implementation\r\n- Add testing infrastructure for both Jackson versions\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2183/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2173", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/events", + "html_url": "https://github.com/hub4j/github-api/pull/2173", + "id": 3751227811, + "node_id": "PR_kwDOAAlq-s66AnNf", + "number": 2173, + "title": "Move to Jackson 3", + "user": { + "login": "pvillard31", + "id": 11541012, + "node_id": "MDQ6VXNlcjExNTQxMDEy", + "avatar_url": "https://avatars.githubusercontent.com/u/11541012?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pvillard31", + "html_url": "https://github.com/pvillard31", + "followers_url": "https://api.github.com/users/pvillard31/followers", + "following_url": "https://api.github.com/users/pvillard31/following{/other_user}", + "gists_url": "https://api.github.com/users/pvillard31/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pvillard31/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pvillard31/subscriptions", + "organizations_url": "https://api.github.com/users/pvillard31/orgs", + "repos_url": "https://api.github.com/users/pvillard31/repos", + "events_url": "https://api.github.com/users/pvillard31/events{/privacy}", + "received_events_url": "https://api.github.com/users/pvillard31/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2025-12-21T15:03:00Z", + "updated_at": "2026-01-25T02:15:17Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2173", + "html_url": "https://github.com/hub4j/github-api/pull/2173", + "diff_url": "https://github.com/hub4j/github-api/pull/2173.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2173.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\nFollowing discussion in #2166.\r\nFixes #2166.\r\n\r\nFor reference: https://github.com/FasterXML/jackson/blob/main/jackson3/MIGRATING_TO_JACKSON_3.md\r\n\r\nThese changes are only targeting the 2.x line since it may be considered as containing breaking changes and requires a minimum java version of Java 17.\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2173/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2168", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/events", + "html_url": "https://github.com/hub4j/github-api/pull/2168", + "id": 3678905639, + "node_id": "PR_kwDOAAlq-s62PChC", + "number": 2168, + "title": "Chore(deps): Bump spring.boot.version from 3.4.5 to 4.0.0", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-12-01T02:09:06Z", + "updated_at": "2026-01-01T02:00:03Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2168", + "html_url": "https://github.com/hub4j/github-api/pull/2168", + "diff_url": "https://github.com/hub4j/github-api/pull/2168.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2168.patch", + "merged_at": null + }, + "body": "Bumps `spring.boot.version` from 3.4.5 to 4.0.0.\nUpdates `org.springframework.boot:spring-boot-dependencies` from 3.4.5 to 4.0.0\n
\nRelease notes\n

Sourced from org.springframework.boot:spring-boot-dependencies's releases.

\n
\n

v4.0.0

\n

Full release notes for Spring Boot 4.0 are available on the wiki. There is also a migration guide to help you upgrade from Spring Boot 3.5.

\n

:star: New Features

\n
    \n
  • Change tomcat and jetty runtime modules to starters #48175
  • \n
  • Rename spring-boot-kotlin-serialization to align with the name of the Kotlinx module that it pulls in #48076
  • \n
\n

:lady_beetle: Bug Fixes

\n
    \n
  • Error properties are a general web concern and should not be located beneath server.* #48201
  • \n
  • With both Jackson 2 and 3 on the classpath, @JsonTest fails due to duplicate jacksonTesterFactoryBean #48198
  • \n
  • Gradle war task does not exclude starter POMs from lib-provided #48197
  • \n
  • spring.test.webclient.mockrestserviceserver.enabled is not aligned with its module's name #48193
  • \n
  • SslMeterBinder doesn't register metrics for dynamically added bundles if no bundles exist at bind time #48182
  • \n
  • Properties bound in the child management context ignore the parent's environment prefix #48177
  • \n
  • ssl.chain.expiry metrics doesn't update for dynamically registered SSL bundles #48171
  • \n
  • Starter for spring-boot-micrometer-metrics is missing #48161
  • \n
  • Elasticsearch client's sniffer functionality should not be enabled by default #48155
  • \n
  • spring-boot-starter-elasticsearch should depend on elasticsearch-java #48141
  • \n
  • Auto-configuration exclusions are checked using a different class loader to the one that loads auto-configuration classes #48132
  • \n
  • New arm64 macbooks fail to bootBuildImage due to incorrect platform image #48128
  • \n
  • Properties for configuring an isolated JsonMapper or ObjectMapper are incorrectly named #48116
  • \n
  • Buildpack fails with recent Docker installs due to hardcoded version in URL #48103
  • \n
  • Image building may fail when specifying a platform if an image has already been built with a different platform #48099
  • \n
  • Default values of Kotlinx Serialization JSON configuration properties are not documented #48097
  • \n
  • Custom XML converters should override defaults in HttpMessageConverters #48096
  • \n
  • Kotlin serialization is used too aggressively when other JSON libraries are available #48070
  • \n
  • PortInUseException incorrectly thrown on failure to bind port due to Netty IP misconfiguration #48059
  • \n
  • Auto-configured JCacheMetrics cannot be customized #48057
  • \n
  • WebSecurityCustomizer beans are excluded by WebMvcTest #48055
  • \n
  • Deprecated EnvironmentPostProcessor does not resolve arguments #48047
  • \n
  • RetryPolicySettings should refer to maxRetries, not maxAttempts #48023
  • \n
  • Devtools Restarter does not work with a parameterless main method #47996
  • \n
  • Dependency management for Kafka should not manage Scala 2.12 libraries #47991
  • \n
  • spring-boot-mail should depend on jakarta.mail:jakarta.mail-api and org.eclipse.angus:angus-mail instead of org.eclipse.angus:jakarta.mail #47983
  • \n
  • spring-boot-starter-data-mongodb-reactive has dependency on reactor-test #47982
  • \n
  • Support for ReactiveElasticsearchClient is in the wrong module #47848
  • \n
\n

:notebook_with_decorative_cover: Documentation

\n
    \n
  • Removed property spring.test.webclient.register-rest-template is still documented #48199
  • \n
  • Mention support for detecting AWS ECS in "Deploying to the Cloud" #48170
  • \n
  • Revise AWS section of "Deploying to the Cloud" in reference manual #48163
  • \n
  • Fix typo in PortInUseException Javadoc #48134
  • \n
  • Correct section about required setters in "Type-safe Configuration Properties" #48131
  • \n
  • Use since attribute in configuration properties deprecation consistently #48122
  • \n
  • Document EndpointJsonMapper and management.endpoints.jackson.isolated-json-mapper #48115
  • \n
  • Document support for configuring servlet context init parameters using properties #48112
  • \n
  • Some configuration properties are not documented in the appendix #48095
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1c0e08b Release v4.0.0
  • \n
  • 3487928 Merge branch '3.5.x'
  • \n
  • 29b8e96 Switch make-default in preparation for Spring Boot 4.0.0
  • \n
  • 88da0dd Merge branch '3.5.x'
  • \n
  • 56feeaa Next development version (v3.5.9-SNAPSHOT)
  • \n
  • 3becdc7 Move server.error properties to spring.web.error
  • \n
  • 2b30632 Merge branch '3.5.x'
  • \n
  • 4f03b44 Merge branch '3.4.x' into 3.5.x
  • \n
  • 3d15c13 Next development version (v3.4.13-SNAPSHOT)
  • \n
  • dc140df Upgrade to Spring Framework 7.0.1
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\nUpdates `org.springframework.boot:spring-boot-maven-plugin` from 3.4.5 to 4.0.0\n
\nRelease notes\n

Sourced from org.springframework.boot:spring-boot-maven-plugin's releases.

\n
\n

v4.0.0

\n

Full release notes for Spring Boot 4.0 are available on the wiki. There is also a migration guide to help you upgrade from Spring Boot 3.5.

\n

:star: New Features

\n
    \n
  • Change tomcat and jetty runtime modules to starters #48175
  • \n
  • Rename spring-boot-kotlin-serialization to align with the name of the Kotlinx module that it pulls in #48076
  • \n
\n

:lady_beetle: Bug Fixes

\n
    \n
  • Error properties are a general web concern and should not be located beneath server.* #48201
  • \n
  • With both Jackson 2 and 3 on the classpath, @JsonTest fails due to duplicate jacksonTesterFactoryBean #48198
  • \n
  • Gradle war task does not exclude starter POMs from lib-provided #48197
  • \n
  • spring.test.webclient.mockrestserviceserver.enabled is not aligned with its module's name #48193
  • \n
  • SslMeterBinder doesn't register metrics for dynamically added bundles if no bundles exist at bind time #48182
  • \n
  • Properties bound in the child management context ignore the parent's environment prefix #48177
  • \n
  • ssl.chain.expiry metrics doesn't update for dynamically registered SSL bundles #48171
  • \n
  • Starter for spring-boot-micrometer-metrics is missing #48161
  • \n
  • Elasticsearch client's sniffer functionality should not be enabled by default #48155
  • \n
  • spring-boot-starter-elasticsearch should depend on elasticsearch-java #48141
  • \n
  • Auto-configuration exclusions are checked using a different class loader to the one that loads auto-configuration classes #48132
  • \n
  • New arm64 macbooks fail to bootBuildImage due to incorrect platform image #48128
  • \n
  • Properties for configuring an isolated JsonMapper or ObjectMapper are incorrectly named #48116
  • \n
  • Buildpack fails with recent Docker installs due to hardcoded version in URL #48103
  • \n
  • Image building may fail when specifying a platform if an image has already been built with a different platform #48099
  • \n
  • Default values of Kotlinx Serialization JSON configuration properties are not documented #48097
  • \n
  • Custom XML converters should override defaults in HttpMessageConverters #48096
  • \n
  • Kotlin serialization is used too aggressively when other JSON libraries are available #48070
  • \n
  • PortInUseException incorrectly thrown on failure to bind port due to Netty IP misconfiguration #48059
  • \n
  • Auto-configured JCacheMetrics cannot be customized #48057
  • \n
  • WebSecurityCustomizer beans are excluded by WebMvcTest #48055
  • \n
  • Deprecated EnvironmentPostProcessor does not resolve arguments #48047
  • \n
  • RetryPolicySettings should refer to maxRetries, not maxAttempts #48023
  • \n
  • Devtools Restarter does not work with a parameterless main method #47996
  • \n
  • Dependency management for Kafka should not manage Scala 2.12 libraries #47991
  • \n
  • spring-boot-mail should depend on jakarta.mail:jakarta.mail-api and org.eclipse.angus:angus-mail instead of org.eclipse.angus:jakarta.mail #47983
  • \n
  • spring-boot-starter-data-mongodb-reactive has dependency on reactor-test #47982
  • \n
  • Support for ReactiveElasticsearchClient is in the wrong module #47848
  • \n
\n

:notebook_with_decorative_cover: Documentation

\n
    \n
  • Removed property spring.test.webclient.register-rest-template is still documented #48199
  • \n
  • Mention support for detecting AWS ECS in "Deploying to the Cloud" #48170
  • \n
  • Revise AWS section of "Deploying to the Cloud" in reference manual #48163
  • \n
  • Fix typo in PortInUseException Javadoc #48134
  • \n
  • Correct section about required setters in "Type-safe Configuration Properties" #48131
  • \n
  • Use since attribute in configuration properties deprecation consistently #48122
  • \n
  • Document EndpointJsonMapper and management.endpoints.jackson.isolated-json-mapper #48115
  • \n
  • Document support for configuring servlet context init parameters using properties #48112
  • \n
  • Some configuration properties are not documented in the appendix #48095
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1c0e08b Release v4.0.0
  • \n
  • 3487928 Merge branch '3.5.x'
  • \n
  • 29b8e96 Switch make-default in preparation for Spring Boot 4.0.0
  • \n
  • 88da0dd Merge branch '3.5.x'
  • \n
  • 56feeaa Next development version (v3.5.9-SNAPSHOT)
  • \n
  • 3becdc7 Move server.error properties to spring.web.error
  • \n
  • 2b30632 Merge branch '3.5.x'
  • \n
  • 4f03b44 Merge branch '3.4.x' into 3.5.x
  • \n
  • 3d15c13 Next development version (v3.4.13-SNAPSHOT)
  • \n
  • dc140df Upgrade to Spring Framework 7.0.1
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2168/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2171", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/events", + "html_url": "https://github.com/hub4j/github-api/pull/2171", + "id": 3678910531, + "node_id": "PR_kwDOAAlq-s62PDmc", + "number": 2171, + "title": "Chore(deps): Bump com.squareup.okhttp3:okhttp from 4.12.0 to 5.3.2", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-12-01T02:11:39Z", + "updated_at": "2026-01-01T02:00:03Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2171", + "html_url": "https://github.com/hub4j/github-api/pull/2171", + "diff_url": "https://github.com/hub4j/github-api/pull/2171.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2171.patch", + "merged_at": null + }, + "body": "Bumps [com.squareup.okhttp3:okhttp](https://github.com/square/okhttp) from 4.12.0 to 5.3.2.\n
\nChangelog\n

Sourced from com.squareup.okhttp3:okhttp's changelog.

\n
\n

Version 5.3.2

\n

2025-11-18

\n
    \n
  • \n

    Fix: Don't delay triggering timeouts. In Okio 3.16.0 we introduced a regression that caused\ntimeouts to fire later than they were supposed to.

    \n
  • \n
  • \n

    Upgrade: [Okio 3.16.4][okio_3_16_4].

    \n
  • \n
\n

Version 5.3.1

\n

2025-11-16

\n

This release is the same as 5.3.0. Okio 3.16.3 didn't have a necessary fix!

\n
    \n
  • Upgrade: [Okio 3.16.3][okio_3_16_3].
  • \n
\n

Version 5.3.0

\n

2025-10-30

\n
    \n
  • \n

    New: Add tags to Call, including computable tags. Use this to attach application-specific\nmetadata to a Call in an EventListener or Interceptor. The tag can be read in any other\nEventListener or Interceptor.

    \n
      override fun intercept(chain: Interceptor.Chain): Response {\n    chain.call().tag(MyAnalyticsTag::class) {\n      MyAnalyticsTag(...)\n    }\n
    return chain.proceed(chain.request())\n
    \n

    }\n

    \n
  • \n
  • \n

    New: Support request bodies on HTTP/1.1 connection upgrades.

    \n
  • \n
  • \n

    New: EventListener.plus() makes it easier to observe events in multiple listeners.

    \n
  • \n
  • \n

    Fix: Don't spam logs with ‘Method isLoggable in android.util.Log not mocked.’ when using\nOkHttp in Robolectric and Paparazzi tests.

    \n
  • \n
  • \n

    Upgrade: [Kotlin 2.2.21][kotlin_2_2_21].

    \n
  • \n
  • \n

    Upgrade: [Okio 3.16.2][okio_3_16_2].

    \n
  • \n
  • \n

    Upgrade: [ZSTD-KMP 0.4.0][zstd_kmp_0_4_0]. This update fixes a bug that caused APKs to fail\n[16 KB ELF alignment checks][elf_alignment].

    \n
  • \n
\n

Version 5.2.3

\n

2025-11-18

\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.squareup.okhttp3:okhttp&package-manager=maven&previous-version=4.12.0&new-version=5.3.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2171/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2153", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/events", + "html_url": "https://github.com/hub4j/github-api/pull/2153", + "id": 3547050854, + "node_id": "PR_kwDOAAlq-s6vY_6j", + "number": 2153, + "title": "(Spike) Move v2 to new package. ", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-10-24T00:06:08Z", + "updated_at": "2025-10-24T00:06:08Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2153", + "html_url": "https://github.com/hub4j/github-api/pull/2153", + "diff_url": "https://github.com/hub4j/github-api/pull/2153.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2153.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\nThis is spike considering what it would look like if we published each new version in it's own package. \r\nThe most complex code should be move to internal for reuse in both v1 and v2 public apis. \r\n\r\nMove most v2 to new package. \r\nThen pull rc1 back into existing package. \r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2153/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2146", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/events", + "html_url": "https://github.com/hub4j/github-api/pull/2146", + "id": 3453632014, + "node_id": "PR_kwDOAAlq-s6qgk4K", + "number": 2146, + "title": "[feat] Add support for the device authentication flow for github apps", + "user": { + "login": "PierreBtz", + "id": 9881659, + "node_id": "MDQ6VXNlcjk4ODE2NTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9881659?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/PierreBtz", + "html_url": "https://github.com/PierreBtz", + "followers_url": "https://api.github.com/users/PierreBtz/followers", + "following_url": "https://api.github.com/users/PierreBtz/following{/other_user}", + "gists_url": "https://api.github.com/users/PierreBtz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/PierreBtz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/PierreBtz/subscriptions", + "organizations_url": "https://api.github.com/users/PierreBtz/orgs", + "repos_url": "https://api.github.com/users/PierreBtz/repos", + "events_url": "https://api.github.com/users/PierreBtz/events{/privacy}", + "received_events_url": "https://api.github.com/users/PierreBtz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-09-25T13:25:37Z", + "updated_at": "2025-09-26T09:05:45Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": true, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2146", + "html_url": "https://github.com/hub4j/github-api/pull/2146", + "diff_url": "https://github.com/hub4j/github-api/pull/2146.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2146.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\n*Opening as a draft since the tests are not ready and I have questions about them*\r\n\r\nThis PR provides support for the device authentication flow for github apps, as documented in https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app#using-the-device-flow-to-generate-a-user-access-token (access token generation) and here https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/refreshing-user-access-tokens#refreshing-a-user-access-token-with-a-refresh-token (refresh token).\r\n\r\nThis is needed when developing java CLIs that need to authenticate to GitHub through a GitHub application.\r\n\r\nReproducing here the documentation to help with the understanding:\r\n\r\n```\r\n In order to authenticate to GitHub as an user using the device flow of your GitHub App, you need to use the <<>>\r\n authentication provider that will take care of retrieving a user access token and refresh it when needed for you.\r\n You need to handle two things by yourself:\r\n 1. You need to provide a <<>> that will be called when a new user access token is retrieved (either on initial creation or on refresh).\r\n It is up to you to store the credential object securely the library does not take care of that.\r\n 2. You need to provide a <<>> that will be called when a user interaction is needed to complete the device flow.\r\n The library provides a basic implementation <<>> that will log the instructions to the console but you could imagine a more complex\r\n implementation that would for example open the user browser automatically (or call some automation that will input the information automatically for instance).\r\n\r\n Here is a complete example to get started:\r\n\r\n+-----+\r\n var clientId = \"\";\r\n var objectMapper = new ObjectMapper();\r\n objectMapper.registerModule(new JavaTimeModule());\r\n\r\n // for demo purpose only, this is not proper secret management!!!\r\n var appCredentialsFile = Path.of(\"/tmp/github-app-credentials.json\");\r\n DeviceFlowGithubAppCredentials appCredentials;\r\n if (Files.exists(appCredentialsFile)) {\r\n appCredentials = objectMapper.readValue(appCredentialsFile.toFile(), DeviceFlowGithubAppCredentials.class);\r\n } else {\r\n appCredentials = EMPTY_CREDENTIALS;\r\n }\r\n\r\n var gh = new GitHubBuilder().withAuthorizationProvider(\r\n new DeviceFlowGithubAppAuthorizationProvider(clientId, appCredentials, ac -> {\r\n // in this basic example, we serialize the credentials as json to a file\r\n // this is not proper secret management and you should probably use something more secure\r\n try {\r\n objectMapper.writeValue(appCredentialsFile.toFile(), ac);\r\n } catch (IOException e) {\r\n throw new RuntimeException(e);\r\n }\r\n }, new LoggerDeviceFlowGithubAppInputManager())).build();\r\n+-----+\r\n``` \r\n\r\nOpened questions I have:\r\n\r\n* I'm not too happy that the main class (`DeviceFlowGithubAppAuthorizationProvider`) cannot be in the authorization package (needs access to a package protected method).\r\n* I'm not too sure how to process with tests: I cannot use the recording method since the authorization process is not going through the api endpoints but through the UI ones (`https://github.com/...`). I didn't find anything in the base class test that would help with this. Also I have to use the `.setRawUrlPath(\"https://github.com/login/oauth/access_token\")` which cannot be intercepted as is obviously. This is not only a problem for tests but also for on prem Github and my current thinking is that I need to enrich the API and the testing framework to support a `uiUrl` that would be the equivalent of the `apiUrl` for the UI.\r\n\r\nSince this starts to widen the impact of this change I'm opening this draft to discuss the potential approaches before going further.\r\n\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2146/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2099", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/events", + "html_url": "https://github.com/hub4j/github-api/pull/2099", + "id": 3037229321, + "node_id": "PR_kwDOAAlq-s6U0PLi", + "number": 2099, + "title": "Refactor pagination", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-05-03T07:23:17Z", + "updated_at": "2025-09-20T08:14:09Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2099", + "html_url": "https://github.com/hub4j/github-api/pull/2099", + "diff_url": "https://github.com/hub4j/github-api/pull/2099.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2099.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2099/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1986", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/events", + "html_url": "https://github.com/hub4j/github-api/pull/1986", + "id": 2697030696, + "node_id": "PR_kwDOAAlq-s6DSCb3", + "number": 1986, + "title": "initial feature add", + "user": { + "login": "gitPushPuppets", + "id": 49495486, + "node_id": "MDQ6VXNlcjQ5NDk1NDg2", + "avatar_url": "https://avatars.githubusercontent.com/u/49495486?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/gitPushPuppets", + "html_url": "https://github.com/gitPushPuppets", + "followers_url": "https://api.github.com/users/gitPushPuppets/followers", + "following_url": "https://api.github.com/users/gitPushPuppets/following{/other_user}", + "gists_url": "https://api.github.com/users/gitPushPuppets/gists{/gist_id}", + "starred_url": "https://api.github.com/users/gitPushPuppets/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/gitPushPuppets/subscriptions", + "organizations_url": "https://api.github.com/users/gitPushPuppets/orgs", + "repos_url": "https://api.github.com/users/gitPushPuppets/repos", + "events_url": "https://api.github.com/users/gitPushPuppets/events{/privacy}", + "received_events_url": "https://api.github.com/users/gitPushPuppets/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 4789870627, + "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", + "name": "work-abandoned", + "color": "000000", + "default": false, + "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2024-11-27T04:41:38Z", + "updated_at": "2025-09-04T14:41:30Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "draft": true, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/1986", + "html_url": "https://github.com/hub4j/github-api/pull/1986", + "diff_url": "https://github.com/hub4j/github-api/pull/1986.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/1986.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1986/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2108", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/events", + "html_url": "https://github.com/hub4j/github-api/pull/2108", + "id": 3148050956, + "node_id": "PR_kwDOAAlq-s6ancHC", + "number": 2108, + "title": "Add missing properties to GHAsset and GHRelease", + "user": { + "login": "solonovamax", + "id": 46940694, + "node_id": "MDQ6VXNlcjQ2OTQwNjk0", + "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/solonovamax", + "html_url": "https://github.com/solonovamax", + "followers_url": "https://api.github.com/users/solonovamax/followers", + "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", + "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", + "organizations_url": "https://api.github.com/users/solonovamax/orgs", + "repos_url": "https://api.github.com/users/solonovamax/repos", + "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", + "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2025-06-15T20:42:27Z", + "updated_at": "2025-07-30T16:23:40Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2108", + "html_url": "https://github.com/hub4j/github-api/pull/2108", + "diff_url": "https://github.com/hub4j/github-api/pull/2108.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2108.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\nAdds missing fields for the `GHAsset` and `GHRelease` classes.\r\nSee: https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28\r\n\r\nI didn't bother adding tests because it's just new fields/getters. \r\n\r\nFixes #2102\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2108/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2098", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/events", + "html_url": "https://github.com/hub4j/github-api/pull/2098", + "id": 3033530320, + "node_id": "PR_kwDOAAlq-s6Un7vp", + "number": 2098, + "title": "Add polymorphic deserialization for the GHAppInstallation account field", + "user": { + "login": "anujhydrabadi", + "id": 129152617, + "node_id": "U_kgDOB7K2aQ", + "avatar_url": "https://avatars.githubusercontent.com/u/129152617?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anujhydrabadi", + "html_url": "https://github.com/anujhydrabadi", + "followers_url": "https://api.github.com/users/anujhydrabadi/followers", + "following_url": "https://api.github.com/users/anujhydrabadi/following{/other_user}", + "gists_url": "https://api.github.com/users/anujhydrabadi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anujhydrabadi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anujhydrabadi/subscriptions", + "organizations_url": "https://api.github.com/users/anujhydrabadi/orgs", + "repos_url": "https://api.github.com/users/anujhydrabadi/repos", + "events_url": "https://api.github.com/users/anujhydrabadi/events{/privacy}", + "received_events_url": "https://api.github.com/users/anujhydrabadi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-05-01T09:37:33Z", + "updated_at": "2025-05-01T09:38:01Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": true, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2098", + "html_url": "https://github.com/hub4j/github-api/pull/2098", + "diff_url": "https://github.com/hub4j/github-api/pull/2098.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2098.patch", + "merged_at": null + }, + "body": "# Description\r\nFixes #1497 \r\nRecovering PR #1522 \r\nThere is a problem: this works fine for events, but when deserializing App Installation GET API responses, the `type` field (based on which we identify whether the `account` is User or Org) gets unset to `null`. The `account` polymorphic deserialization part works fine though. Perhaps there is a difference in how we are using Jackson at both places (events vs regular API responses), but I have not been able to figure it out yet. \r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2098/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2065", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/events", + "html_url": "https://github.com/hub4j/github-api/pull/2065", + "id": 2934401236, + "node_id": "PR_kwDOAAlq-s6PaV84", + "number": 2065, + "title": "Chore(deps): Bump spotbugs.version from 4.8.6 to 4.9.3", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2025-03-20T07:38:54Z", + "updated_at": "2025-05-01T02:35:32Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2065", + "html_url": "https://github.com/hub4j/github-api/pull/2065", + "diff_url": "https://github.com/hub4j/github-api/pull/2065.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2065.patch", + "merged_at": null + }, + "body": "Bumps `spotbugs.version` from 4.8.6 to 4.9.3.\nUpdates `com.github.spotbugs:spotbugs-annotations` from 4.8.6 to 4.9.3\n
\nRelease notes\n

Sourced from com.github.spotbugs:spotbugs-annotations's releases.

\n
\n

SpotBugs 4.9.3

\n

CHANGELOG

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

CHECKSUM

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
filechecksum (sha256)
spotbugs-4.9.3-javadoc.jar3d0d103724cbaaffc27f17d28d9b17f8972fb378397f8f04f6f05268bde110b7
spotbugs-4.9.3-sources.jar0aa5c905469eb578a3dbe09dcf704cf892568610cdb58550b142d658e37a29d4
spotbugs-4.9.3.tgzd464d56050cf1dbda032e9482e1188f7cd7b7646eaff79c2e6cbe4d6822f4d9f
spotbugs-4.9.3.zip3b2dcf86f97d701700121cee4bd22305d4b54fd9ed7666fa0f53933a4ab92251
spotbugs-annotations-4.9.3-javadoc.jar5fce79dc01a97aae84670922dd3581aa621b980535e4f6695a71db553dcb9cb4
spotbugs-annotations-4.9.3-sources.jar990ad9f3500499a99466b7c1e01284f4f41d1499358e7dc38c8defc59dab114c
spotbugs-annotations.jar13532bfe2f45fcd491432221df72d9cd0efb8f987c9245e12befa192c8925ce3
spotbugs-ant-4.9.3-javadoc.jar346eb5215f9d157ab46c3216a783416e2fa2e8c9d4458143267fb518f81c7d77
spotbugs-ant-4.9.3-sources.jar591073402e4110093a380169acd3f33b26c2f893c2eaed5a6460d9be0b26014e
spotbugs-ant.jar3a6f453696294d5314e648d4891d35e34315e11cb63c758a1601021cc0d803d1
spotbugs.jar710e8b98f1ae23cdb71aaaf07e8d71fb63b44f2bbbaa1df3c3ba0de62aba6ec9
test-harness-4.9.3-javadoc.jar57f51147e289b5c6493f844beaac97cde57773a1d16ce064e9deb8963b3f99ce
test-harness-4.9.3-sources.jar22688f14ef808cde65cc46e86d41c617fc397fc4967516006a73ce8bad658b9f
test-harness-4.9.3.jar9bf5bba9546e4f89032006261dd2921a79fc3044e473ee1fa73af870cb43da15
test-harness-core-4.9.3-javadoc.jar15aac012f3a8c8d6600075efe824aecab8233778e58345fecca65d7970256311
test-harness-core-4.9.3-sources.jar13825de35190089490c7e290b52bafe6a9b08ab431177c0191dae9cf2a88a55d
test-harness-core-4.9.3.jar3c74cc6d2d6f999d403f00f97685587e617d2bf1bfc348bbd0597e785c83feec
test-harness-jupiter-4.9.3-javadoc.jara8f276fb01743b8dc9f8cd6b517ae0748e38f673e31615a923c9c61f5fd9de58
test-harness-jupiter-4.9.3-sources.jar0aefbc5c8bd406e5dc0b1d59bc3afc6889c02010d486b22242f4f19a1a935800
test-harness-jupiter-4.9.3.jar0e9509de32f8fbc94cf088dbee80394fa93807a766532568e652cd622ce737c8
\n

SpotBugs 4.9.2

\n

CHANGELOG

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from com.github.spotbugs:spotbugs-annotations's changelog.

\n
\n

4.9.3 - 2025-03-14

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

4.9.2 - 2025-03-01

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n
    \n
  • Removed the TLW_TWO_LOCK_NOTIFY, LI_LAZY_INIT_INSTANCE, BRSA_BAD_RESULTSET_ACCESS, BC_NULL_INSTANCEOF, NP_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR and RCN_REDUNDANT_CHECKED_NULL_COMPARISON deprecated bug patterns.
  • \n
\n

4.9.1 - 2025-02-02

\n

Added

\n
    \n
  • New detector SharedVariableAtomicityDetector for new bug types AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE, AT_NONATOMIC_64BIT_PRIMITIVE and AT_STALE_THREAD_WRITE_OF_PRIMITIVE (See SEI CERT rules VNA00-J, VNA02-J and VNA05-J).
  • \n
  • New detector FindHiddenMethod for bug type HSM_HIDING_METHOD. This bug is reported whenever a subclass method hides the static method of super class. (See SEI CERT MET07-J).
  • \n
\n

Fixed

\n
    \n
  • Fixed the parsing of generics methods in ThrowingExceptions (#3267)
  • \n
  • Accept the 1st parameter of java.util.concurrent.CompletableFuture's completeOnTimeout(), getNow() and obtrudeValue() functions as nullable (#1001).
  • \n
  • Fixed the analysis error when FindReturnRef was checking instructions corresponding to a CFG branch that was optimized away (#3266)
  • \n
  • Added execute file permission to files in the distribution archive (#3274)
  • \n
  • Fixed a stack overflow in MultipleInstantiationsOfSingletons when a singleton initializer makes recursive calls (#3280)
  • \n
  • Fixed NPE in FindReturnRef on inner class fields (#3283)
  • \n
  • Fixed NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE false positive when add edu.umd.cs.findbugs.annotations.Nullable (#3243)
  • \n
\n

4.9.0 - 2025-01-15

\n

Added

\n
    \n
  • Updated the SuppressFBWarnings annotation to support finer grained bug suppressions (#3102)
  • \n
  • SimpleDateFormat, DateTimeFormatter, FastDateFormat string check for bad combinations of flag formatting (#637)
  • \n
  • New detector ResourceInMultipleThreadsDetector and introduced new bug type:\n
      \n
    • AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD is reported in case of unsafe resource access in multiple threads.
    • \n
    \n
  • \n
\n

Fixed

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1f6a719 release v4.9.3
  • \n
  • 30f22d8 fix(deps): update junit5 monorepo to v5.12.1 (#3357)
  • \n
  • 4b0cfff cleanup: remove redundant implementations of getDetectorClassName() (#3352)
  • \n
  • bd996f4 chore(deps): update dependency com.diffplug.gradle:goomph to v4.3.0 (#3355)
  • \n
  • e46c442 Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3353)
  • \n
  • 7450785 Introduce UselessSuppressionDetector to report the useless suppressions
  • \n
  • 830e10c fix(deps): update dependency checkstyle to v10.21.4 (#3347)
  • \n
  • b5c7686 fix(deps): update dependency org.checkerframework:checker-qual to v3.49.1 (#3...
  • \n
  • c4b59b1 chore(deps): update sphinxdoc/sphinx docker tag to v8.2.3 (#3344)
  • \n
  • 7fd6fa4 fix(deps): update mockito monorepo to v5.16.0 (#3345)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\nUpdates `com.github.spotbugs:spotbugs` from 4.8.6 to 4.9.3\n
\nRelease notes\n

Sourced from com.github.spotbugs:spotbugs's releases.

\n
\n

SpotBugs 4.9.3

\n

CHANGELOG

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

CHECKSUM

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
filechecksum (sha256)
spotbugs-4.9.3-javadoc.jar3d0d103724cbaaffc27f17d28d9b17f8972fb378397f8f04f6f05268bde110b7
spotbugs-4.9.3-sources.jar0aa5c905469eb578a3dbe09dcf704cf892568610cdb58550b142d658e37a29d4
spotbugs-4.9.3.tgzd464d56050cf1dbda032e9482e1188f7cd7b7646eaff79c2e6cbe4d6822f4d9f
spotbugs-4.9.3.zip3b2dcf86f97d701700121cee4bd22305d4b54fd9ed7666fa0f53933a4ab92251
spotbugs-annotations-4.9.3-javadoc.jar5fce79dc01a97aae84670922dd3581aa621b980535e4f6695a71db553dcb9cb4
spotbugs-annotations-4.9.3-sources.jar990ad9f3500499a99466b7c1e01284f4f41d1499358e7dc38c8defc59dab114c
spotbugs-annotations.jar13532bfe2f45fcd491432221df72d9cd0efb8f987c9245e12befa192c8925ce3
spotbugs-ant-4.9.3-javadoc.jar346eb5215f9d157ab46c3216a783416e2fa2e8c9d4458143267fb518f81c7d77
spotbugs-ant-4.9.3-sources.jar591073402e4110093a380169acd3f33b26c2f893c2eaed5a6460d9be0b26014e
spotbugs-ant.jar3a6f453696294d5314e648d4891d35e34315e11cb63c758a1601021cc0d803d1
spotbugs.jar710e8b98f1ae23cdb71aaaf07e8d71fb63b44f2bbbaa1df3c3ba0de62aba6ec9
test-harness-4.9.3-javadoc.jar57f51147e289b5c6493f844beaac97cde57773a1d16ce064e9deb8963b3f99ce
test-harness-4.9.3-sources.jar22688f14ef808cde65cc46e86d41c617fc397fc4967516006a73ce8bad658b9f
test-harness-4.9.3.jar9bf5bba9546e4f89032006261dd2921a79fc3044e473ee1fa73af870cb43da15
test-harness-core-4.9.3-javadoc.jar15aac012f3a8c8d6600075efe824aecab8233778e58345fecca65d7970256311
test-harness-core-4.9.3-sources.jar13825de35190089490c7e290b52bafe6a9b08ab431177c0191dae9cf2a88a55d
test-harness-core-4.9.3.jar3c74cc6d2d6f999d403f00f97685587e617d2bf1bfc348bbd0597e785c83feec
test-harness-jupiter-4.9.3-javadoc.jara8f276fb01743b8dc9f8cd6b517ae0748e38f673e31615a923c9c61f5fd9de58
test-harness-jupiter-4.9.3-sources.jar0aefbc5c8bd406e5dc0b1d59bc3afc6889c02010d486b22242f4f19a1a935800
test-harness-jupiter-4.9.3.jar0e9509de32f8fbc94cf088dbee80394fa93807a766532568e652cd622ce737c8
\n

SpotBugs 4.9.2

\n

CHANGELOG

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from com.github.spotbugs:spotbugs's changelog.

\n
\n

4.9.3 - 2025-03-14

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

4.9.2 - 2025-03-01

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n
    \n
  • Removed the TLW_TWO_LOCK_NOTIFY, LI_LAZY_INIT_INSTANCE, BRSA_BAD_RESULTSET_ACCESS, BC_NULL_INSTANCEOF, NP_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR and RCN_REDUNDANT_CHECKED_NULL_COMPARISON deprecated bug patterns.
  • \n
\n

4.9.1 - 2025-02-02

\n

Added

\n
    \n
  • New detector SharedVariableAtomicityDetector for new bug types AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE, AT_NONATOMIC_64BIT_PRIMITIVE and AT_STALE_THREAD_WRITE_OF_PRIMITIVE (See SEI CERT rules VNA00-J, VNA02-J and VNA05-J).
  • \n
  • New detector FindHiddenMethod for bug type HSM_HIDING_METHOD. This bug is reported whenever a subclass method hides the static method of super class. (See SEI CERT MET07-J).
  • \n
\n

Fixed

\n
    \n
  • Fixed the parsing of generics methods in ThrowingExceptions (#3267)
  • \n
  • Accept the 1st parameter of java.util.concurrent.CompletableFuture's completeOnTimeout(), getNow() and obtrudeValue() functions as nullable (#1001).
  • \n
  • Fixed the analysis error when FindReturnRef was checking instructions corresponding to a CFG branch that was optimized away (#3266)
  • \n
  • Added execute file permission to files in the distribution archive (#3274)
  • \n
  • Fixed a stack overflow in MultipleInstantiationsOfSingletons when a singleton initializer makes recursive calls (#3280)
  • \n
  • Fixed NPE in FindReturnRef on inner class fields (#3283)
  • \n
  • Fixed NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE false positive when add edu.umd.cs.findbugs.annotations.Nullable (#3243)
  • \n
\n

4.9.0 - 2025-01-15

\n

Added

\n
    \n
  • Updated the SuppressFBWarnings annotation to support finer grained bug suppressions (#3102)
  • \n
  • SimpleDateFormat, DateTimeFormatter, FastDateFormat string check for bad combinations of flag formatting (#637)
  • \n
  • New detector ResourceInMultipleThreadsDetector and introduced new bug type:\n
      \n
    • AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD is reported in case of unsafe resource access in multiple threads.
    • \n
    \n
  • \n
\n

Fixed

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1f6a719 release v4.9.3
  • \n
  • 30f22d8 fix(deps): update junit5 monorepo to v5.12.1 (#3357)
  • \n
  • 4b0cfff cleanup: remove redundant implementations of getDetectorClassName() (#3352)
  • \n
  • bd996f4 chore(deps): update dependency com.diffplug.gradle:goomph to v4.3.0 (#3355)
  • \n
  • e46c442 Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3353)
  • \n
  • 7450785 Introduce UselessSuppressionDetector to report the useless suppressions
  • \n
  • 830e10c fix(deps): update dependency checkstyle to v10.21.4 (#3347)
  • \n
  • b5c7686 fix(deps): update dependency org.checkerframework:checker-qual to v3.49.1 (#3...
  • \n
  • c4b59b1 chore(deps): update sphinxdoc/sphinx docker tag to v8.2.3 (#3344)
  • \n
  • 7fd6fa4 fix(deps): update mockito monorepo to v5.16.0 (#3345)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2065/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1917", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/events", + "html_url": "https://github.com/hub4j/github-api/pull/1917", + "id": 2492934092, + "node_id": "PR_kwDOAAlq-s55wQBP", + "number": 1917, + "title": "Support setting & checking AutomatedSecurityFixes", + "user": { + "login": "ranma2913", + "id": 4295880, + "node_id": "MDQ6VXNlcjQyOTU4ODA=", + "avatar_url": "https://avatars.githubusercontent.com/u/4295880?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ranma2913", + "html_url": "https://github.com/ranma2913", + "followers_url": "https://api.github.com/users/ranma2913/followers", + "following_url": "https://api.github.com/users/ranma2913/following{/other_user}", + "gists_url": "https://api.github.com/users/ranma2913/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ranma2913/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ranma2913/subscriptions", + "organizations_url": "https://api.github.com/users/ranma2913/orgs", + "repos_url": "https://api.github.com/users/ranma2913/repos", + "events_url": "https://api.github.com/users/ranma2913/events{/privacy}", + "received_events_url": "https://api.github.com/users/ranma2913/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 4789870627, + "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", + "name": "work-abandoned", + "color": "000000", + "default": false, + "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2024-08-28T20:27:53Z", + "updated_at": "2025-01-14T18:08:46Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "draft": true, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/1917", + "html_url": "https://github.com/hub4j/github-api/pull/1917", + "diff_url": "https://github.com/hub4j/github-api/pull/1917.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/1917.patch", + "merged_at": null + }, + "body": "https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#check-if-automated-security-fixes-are-enabled-for-a-repository\r\n\r\n# Description\r\n\r\nFixes #1916\r\n\r\nThis change will support Support Endpoints:\r\n\r\n https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#check-if-automated-security-fixes-are-enabled-for-a-repository\r\n https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#enable-automated-security-fixes\r\n https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#disable-automated-security-fixes\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1917/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1787", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/events", + "html_url": "https://github.com/hub4j/github-api/pull/1787", + "id": 2122147185, + "node_id": "PR_kwDOAAlq-s5mNyo1", + "number": 1787, + "title": "Code Scanning API support", + "user": { + "login": "wwong", + "id": 1160302, + "node_id": "MDQ6VXNlcjExNjAzMDI=", + "avatar_url": "https://avatars.githubusercontent.com/u/1160302?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/wwong", + "html_url": "https://github.com/wwong", + "followers_url": "https://api.github.com/users/wwong/followers", + "following_url": "https://api.github.com/users/wwong/following{/other_user}", + "gists_url": "https://api.github.com/users/wwong/gists{/gist_id}", + "starred_url": "https://api.github.com/users/wwong/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/wwong/subscriptions", + "organizations_url": "https://api.github.com/users/wwong/orgs", + "repos_url": "https://api.github.com/users/wwong/repos", + "events_url": "https://api.github.com/users/wwong/events{/privacy}", + "received_events_url": "https://api.github.com/users/wwong/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 4789870627, + "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", + "name": "work-abandoned", + "color": "000000", + "default": false, + "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2024-02-07T04:08:42Z", + "updated_at": "2024-07-01T19:15:15Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "draft": true, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/1787", + "html_url": "https://github.com/hub4j/github-api/pull/1787", + "diff_url": "https://github.com/hub4j/github-api/pull/1787.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/1787.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\nFollowing up on open comments from https://github.com/hub4j/github-api/pull/1142 and https://github.com/cortexapps/github-api/pull/8\r\n\r\nI don't currently have access to the security alerts for the example test repo (https://github.com/hub4j-test-org/Pixi), so the response fields might be slightly outdated until I (or someone else) can re-record the wiremock samples.\r\n\r\nStart of an (incomplete) implementation for https://github.com/hub4j/github-api/issues/1133 (will add more endpoints in a later PR)\r\n\r\nThis change adds the read-only calls for the following endpoints, as they were originally implemented in previous PRs:\r\n* [List code scanning alerts for a repository](https://docs.github.com/en/rest/code-scanning/code-scanning?apiVersion=2022-11-28#list-code-scanning-alerts-for-a-repository)\r\n* [Get a code scanning alert](https://docs.github.com/en/rest/code-scanning/code-scanning?apiVersion=2022-11-28#get-a-code-scanning-alert)\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1787/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1730", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/events", + "html_url": "https://github.com/hub4j/github-api/pull/1730", + "id": 1952864832, + "node_id": "PR_kwDOAAlq-s5dTnjz", + "number": 1730, + "title": "Paginator", + "user": { + "login": "anujhydrabadi", + "id": 129152617, + "node_id": "U_kgDOB7K2aQ", + "avatar_url": "https://avatars.githubusercontent.com/u/129152617?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anujhydrabadi", + "html_url": "https://github.com/anujhydrabadi", + "followers_url": "https://api.github.com/users/anujhydrabadi/followers", + "following_url": "https://api.github.com/users/anujhydrabadi/following{/other_user}", + "gists_url": "https://api.github.com/users/anujhydrabadi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anujhydrabadi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anujhydrabadi/subscriptions", + "organizations_url": "https://api.github.com/users/anujhydrabadi/orgs", + "repos_url": "https://api.github.com/users/anujhydrabadi/repos", + "events_url": "https://api.github.com/users/anujhydrabadi/events{/privacy}", + "received_events_url": "https://api.github.com/users/anujhydrabadi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 4789870627, + "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", + "name": "work-abandoned", + "color": "000000", + "default": false, + "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2023-10-19T18:48:14Z", + "updated_at": "2024-06-20T03:14:40Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": true, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/1730", + "html_url": "https://github.com/hub4j/github-api/pull/1730", + "diff_url": "https://github.com/hub4j/github-api/pull/1730.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/1730.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\n`paginator()` method in `PagedIterable` to support starting at a particular page, and next, previous, first, last and jumping to any particular page, along with a few other supporting methods. Made in parallel to `iterator()` method so as to keep backward compatibility, but supports all functionality that `iterator()` provides.\r\n\r\nFixes #348 \r\nFixes #1614 \r\nFixes #448 \r\nFixes #1197 \r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1730/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + } + ] +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/3-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/3-search_issues.json new file mode 100644 index 0000000000..63a6d51e2d --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/3-search_issues.json @@ -0,0 +1,1239 @@ +{ + "total_count": 16, + "incomplete_results": false, + "items": [ + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2185", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2185/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2185/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2185/events", + "html_url": "https://github.com/hub4j/github-api/pull/2185", + "id": 3853746359, + "node_id": "PR_kwDOAAlq-s6_QWo_", + "number": 2185, + "title": "feat: paginated gh pull request query builder", + "user": { + "login": "Anonycoders", + "id": 40047636, + "node_id": "MDQ6VXNlcjQwMDQ3NjM2", + "avatar_url": "https://avatars.githubusercontent.com/u/40047636?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Anonycoders", + "html_url": "https://github.com/Anonycoders", + "followers_url": "https://api.github.com/users/Anonycoders/followers", + "following_url": "https://api.github.com/users/Anonycoders/following{/other_user}", + "gists_url": "https://api.github.com/users/Anonycoders/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Anonycoders/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Anonycoders/subscriptions", + "organizations_url": "https://api.github.com/users/Anonycoders/orgs", + "repos_url": "https://api.github.com/users/Anonycoders/repos", + "events_url": "https://api.github.com/users/Anonycoders/events{/privacy}", + "received_events_url": "https://api.github.com/users/Anonycoders/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2026-01-25T19:29:46Z", + "updated_at": "2026-01-25T19:29:46Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2185", + "html_url": "https://github.com/hub4j/github-api/pull/2185", + "diff_url": "https://github.com/hub4j/github-api/pull/2185.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2185.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\nFixes #2032 - (`GHPullRequestQueryBuilder` doesn't seem to support `pageSize(int)` but `GHIssueQueryBuilder` does)\r\n\r\nhttps://docs.github.com/en/rest/pulls/pulls?apiVersion=2022-11-28#list-pull-requests\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2185/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2185/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2184", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2184/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2184/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2184/events", + "html_url": "https://github.com/hub4j/github-api/pull/2184", + "id": 3852498861, + "node_id": "PR_kwDOAAlq-s6_MgOl", + "number": 2184, + "title": "feat: add GHPullRequest.markReadyForReview for draft PRs", + "user": { + "login": "Anonycoders", + "id": 40047636, + "node_id": "MDQ6VXNlcjQwMDQ3NjM2", + "avatar_url": "https://avatars.githubusercontent.com/u/40047636?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Anonycoders", + "html_url": "https://github.com/Anonycoders", + "followers_url": "https://api.github.com/users/Anonycoders/followers", + "following_url": "https://api.github.com/users/Anonycoders/following{/other_user}", + "gists_url": "https://api.github.com/users/Anonycoders/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Anonycoders/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Anonycoders/subscriptions", + "organizations_url": "https://api.github.com/users/Anonycoders/orgs", + "repos_url": "https://api.github.com/users/Anonycoders/repos", + "events_url": "https://api.github.com/users/Anonycoders/events{/privacy}", + "received_events_url": "https://api.github.com/users/Anonycoders/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-01-25T03:46:29Z", + "updated_at": "2026-01-25T04:32:25Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2184", + "html_url": "https://github.com/hub4j/github-api/pull/2184", + "diff_url": "https://github.com/hub4j/github-api/pull/2184.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2184.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\nThis change adds new functionality to allow `marking draft PRs as ready for review` using GraphQL as it's not supported by REST.\r\n\r\nhttps://docs.github.com/en/graphql/reference/mutations#markpullrequestreadyforreview\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2184/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2184/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2183", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/events", + "html_url": "https://github.com/hub4j/github-api/pull/2183", + "id": 3852488828, + "node_id": "PR_kwDOAAlq-s6_MeOS", + "number": 2183, + "title": "Move to Jackson 3 - Phase 2", + "user": { + "login": "pvillard31", + "id": 11541012, + "node_id": "MDQ6VXNlcjExNTQxMDEy", + "avatar_url": "https://avatars.githubusercontent.com/u/11541012?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pvillard31", + "html_url": "https://github.com/pvillard31", + "followers_url": "https://api.github.com/users/pvillard31/followers", + "following_url": "https://api.github.com/users/pvillard31/following{/other_user}", + "gists_url": "https://api.github.com/users/pvillard31/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pvillard31/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pvillard31/subscriptions", + "organizations_url": "https://api.github.com/users/pvillard31/orgs", + "repos_url": "https://api.github.com/users/pvillard31/repos", + "events_url": "https://api.github.com/users/pvillard31/events{/privacy}", + "received_events_url": "https://api.github.com/users/pvillard31/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2026-01-25T03:36:00Z", + "updated_at": "2026-01-25T03:36:00Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2183", + "html_url": "https://github.com/hub4j/github-api/pull/2183", + "diff_url": "https://github.com/hub4j/github-api/pull/2183.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2183.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\nSee #2173 for the initial PR and associated discussion.\r\n\r\nThis PR is the follow-up of #2182.\r\n\r\n- Design GitHubJackson interface with methods for reading/writing JSON Implement GitHubJackson2 and GitHubJackson3\r\n- Create DefaultGitHubJackson factory with programmatic selection\r\n- Create GitHubJacksonException wrapper classes\r\n- Add GitHubBuilder.withJackson() for configuring Jackson implementation\r\n- Add testing infrastructure for both Jackson versions\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2183/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2173", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/events", + "html_url": "https://github.com/hub4j/github-api/pull/2173", + "id": 3751227811, + "node_id": "PR_kwDOAAlq-s66AnNf", + "number": 2173, + "title": "Move to Jackson 3", + "user": { + "login": "pvillard31", + "id": 11541012, + "node_id": "MDQ6VXNlcjExNTQxMDEy", + "avatar_url": "https://avatars.githubusercontent.com/u/11541012?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/pvillard31", + "html_url": "https://github.com/pvillard31", + "followers_url": "https://api.github.com/users/pvillard31/followers", + "following_url": "https://api.github.com/users/pvillard31/following{/other_user}", + "gists_url": "https://api.github.com/users/pvillard31/gists{/gist_id}", + "starred_url": "https://api.github.com/users/pvillard31/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/pvillard31/subscriptions", + "organizations_url": "https://api.github.com/users/pvillard31/orgs", + "repos_url": "https://api.github.com/users/pvillard31/repos", + "events_url": "https://api.github.com/users/pvillard31/events{/privacy}", + "received_events_url": "https://api.github.com/users/pvillard31/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 5, + "created_at": "2025-12-21T15:03:00Z", + "updated_at": "2026-01-25T02:15:17Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2173", + "html_url": "https://github.com/hub4j/github-api/pull/2173", + "diff_url": "https://github.com/hub4j/github-api/pull/2173.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2173.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\nFollowing discussion in #2166.\r\nFixes #2166.\r\n\r\nFor reference: https://github.com/FasterXML/jackson/blob/main/jackson3/MIGRATING_TO_JACKSON_3.md\r\n\r\nThese changes are only targeting the 2.x line since it may be considered as containing breaking changes and requires a minimum java version of Java 17.\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2173/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2168", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/events", + "html_url": "https://github.com/hub4j/github-api/pull/2168", + "id": 3678905639, + "node_id": "PR_kwDOAAlq-s62PChC", + "number": 2168, + "title": "Chore(deps): Bump spring.boot.version from 3.4.5 to 4.0.0", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-12-01T02:09:06Z", + "updated_at": "2026-01-01T02:00:03Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2168", + "html_url": "https://github.com/hub4j/github-api/pull/2168", + "diff_url": "https://github.com/hub4j/github-api/pull/2168.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2168.patch", + "merged_at": null + }, + "body": "Bumps `spring.boot.version` from 3.4.5 to 4.0.0.\nUpdates `org.springframework.boot:spring-boot-dependencies` from 3.4.5 to 4.0.0\n
\nRelease notes\n

Sourced from org.springframework.boot:spring-boot-dependencies's releases.

\n
\n

v4.0.0

\n

Full release notes for Spring Boot 4.0 are available on the wiki. There is also a migration guide to help you upgrade from Spring Boot 3.5.

\n

:star: New Features

\n
    \n
  • Change tomcat and jetty runtime modules to starters #48175
  • \n
  • Rename spring-boot-kotlin-serialization to align with the name of the Kotlinx module that it pulls in #48076
  • \n
\n

:lady_beetle: Bug Fixes

\n
    \n
  • Error properties are a general web concern and should not be located beneath server.* #48201
  • \n
  • With both Jackson 2 and 3 on the classpath, @JsonTest fails due to duplicate jacksonTesterFactoryBean #48198
  • \n
  • Gradle war task does not exclude starter POMs from lib-provided #48197
  • \n
  • spring.test.webclient.mockrestserviceserver.enabled is not aligned with its module's name #48193
  • \n
  • SslMeterBinder doesn't register metrics for dynamically added bundles if no bundles exist at bind time #48182
  • \n
  • Properties bound in the child management context ignore the parent's environment prefix #48177
  • \n
  • ssl.chain.expiry metrics doesn't update for dynamically registered SSL bundles #48171
  • \n
  • Starter for spring-boot-micrometer-metrics is missing #48161
  • \n
  • Elasticsearch client's sniffer functionality should not be enabled by default #48155
  • \n
  • spring-boot-starter-elasticsearch should depend on elasticsearch-java #48141
  • \n
  • Auto-configuration exclusions are checked using a different class loader to the one that loads auto-configuration classes #48132
  • \n
  • New arm64 macbooks fail to bootBuildImage due to incorrect platform image #48128
  • \n
  • Properties for configuring an isolated JsonMapper or ObjectMapper are incorrectly named #48116
  • \n
  • Buildpack fails with recent Docker installs due to hardcoded version in URL #48103
  • \n
  • Image building may fail when specifying a platform if an image has already been built with a different platform #48099
  • \n
  • Default values of Kotlinx Serialization JSON configuration properties are not documented #48097
  • \n
  • Custom XML converters should override defaults in HttpMessageConverters #48096
  • \n
  • Kotlin serialization is used too aggressively when other JSON libraries are available #48070
  • \n
  • PortInUseException incorrectly thrown on failure to bind port due to Netty IP misconfiguration #48059
  • \n
  • Auto-configured JCacheMetrics cannot be customized #48057
  • \n
  • WebSecurityCustomizer beans are excluded by WebMvcTest #48055
  • \n
  • Deprecated EnvironmentPostProcessor does not resolve arguments #48047
  • \n
  • RetryPolicySettings should refer to maxRetries, not maxAttempts #48023
  • \n
  • Devtools Restarter does not work with a parameterless main method #47996
  • \n
  • Dependency management for Kafka should not manage Scala 2.12 libraries #47991
  • \n
  • spring-boot-mail should depend on jakarta.mail:jakarta.mail-api and org.eclipse.angus:angus-mail instead of org.eclipse.angus:jakarta.mail #47983
  • \n
  • spring-boot-starter-data-mongodb-reactive has dependency on reactor-test #47982
  • \n
  • Support for ReactiveElasticsearchClient is in the wrong module #47848
  • \n
\n

:notebook_with_decorative_cover: Documentation

\n
    \n
  • Removed property spring.test.webclient.register-rest-template is still documented #48199
  • \n
  • Mention support for detecting AWS ECS in "Deploying to the Cloud" #48170
  • \n
  • Revise AWS section of "Deploying to the Cloud" in reference manual #48163
  • \n
  • Fix typo in PortInUseException Javadoc #48134
  • \n
  • Correct section about required setters in "Type-safe Configuration Properties" #48131
  • \n
  • Use since attribute in configuration properties deprecation consistently #48122
  • \n
  • Document EndpointJsonMapper and management.endpoints.jackson.isolated-json-mapper #48115
  • \n
  • Document support for configuring servlet context init parameters using properties #48112
  • \n
  • Some configuration properties are not documented in the appendix #48095
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1c0e08b Release v4.0.0
  • \n
  • 3487928 Merge branch '3.5.x'
  • \n
  • 29b8e96 Switch make-default in preparation for Spring Boot 4.0.0
  • \n
  • 88da0dd Merge branch '3.5.x'
  • \n
  • 56feeaa Next development version (v3.5.9-SNAPSHOT)
  • \n
  • 3becdc7 Move server.error properties to spring.web.error
  • \n
  • 2b30632 Merge branch '3.5.x'
  • \n
  • 4f03b44 Merge branch '3.4.x' into 3.5.x
  • \n
  • 3d15c13 Next development version (v3.4.13-SNAPSHOT)
  • \n
  • dc140df Upgrade to Spring Framework 7.0.1
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\nUpdates `org.springframework.boot:spring-boot-maven-plugin` from 3.4.5 to 4.0.0\n
\nRelease notes\n

Sourced from org.springframework.boot:spring-boot-maven-plugin's releases.

\n
\n

v4.0.0

\n

Full release notes for Spring Boot 4.0 are available on the wiki. There is also a migration guide to help you upgrade from Spring Boot 3.5.

\n

:star: New Features

\n
    \n
  • Change tomcat and jetty runtime modules to starters #48175
  • \n
  • Rename spring-boot-kotlin-serialization to align with the name of the Kotlinx module that it pulls in #48076
  • \n
\n

:lady_beetle: Bug Fixes

\n
    \n
  • Error properties are a general web concern and should not be located beneath server.* #48201
  • \n
  • With both Jackson 2 and 3 on the classpath, @JsonTest fails due to duplicate jacksonTesterFactoryBean #48198
  • \n
  • Gradle war task does not exclude starter POMs from lib-provided #48197
  • \n
  • spring.test.webclient.mockrestserviceserver.enabled is not aligned with its module's name #48193
  • \n
  • SslMeterBinder doesn't register metrics for dynamically added bundles if no bundles exist at bind time #48182
  • \n
  • Properties bound in the child management context ignore the parent's environment prefix #48177
  • \n
  • ssl.chain.expiry metrics doesn't update for dynamically registered SSL bundles #48171
  • \n
  • Starter for spring-boot-micrometer-metrics is missing #48161
  • \n
  • Elasticsearch client's sniffer functionality should not be enabled by default #48155
  • \n
  • spring-boot-starter-elasticsearch should depend on elasticsearch-java #48141
  • \n
  • Auto-configuration exclusions are checked using a different class loader to the one that loads auto-configuration classes #48132
  • \n
  • New arm64 macbooks fail to bootBuildImage due to incorrect platform image #48128
  • \n
  • Properties for configuring an isolated JsonMapper or ObjectMapper are incorrectly named #48116
  • \n
  • Buildpack fails with recent Docker installs due to hardcoded version in URL #48103
  • \n
  • Image building may fail when specifying a platform if an image has already been built with a different platform #48099
  • \n
  • Default values of Kotlinx Serialization JSON configuration properties are not documented #48097
  • \n
  • Custom XML converters should override defaults in HttpMessageConverters #48096
  • \n
  • Kotlin serialization is used too aggressively when other JSON libraries are available #48070
  • \n
  • PortInUseException incorrectly thrown on failure to bind port due to Netty IP misconfiguration #48059
  • \n
  • Auto-configured JCacheMetrics cannot be customized #48057
  • \n
  • WebSecurityCustomizer beans are excluded by WebMvcTest #48055
  • \n
  • Deprecated EnvironmentPostProcessor does not resolve arguments #48047
  • \n
  • RetryPolicySettings should refer to maxRetries, not maxAttempts #48023
  • \n
  • Devtools Restarter does not work with a parameterless main method #47996
  • \n
  • Dependency management for Kafka should not manage Scala 2.12 libraries #47991
  • \n
  • spring-boot-mail should depend on jakarta.mail:jakarta.mail-api and org.eclipse.angus:angus-mail instead of org.eclipse.angus:jakarta.mail #47983
  • \n
  • spring-boot-starter-data-mongodb-reactive has dependency on reactor-test #47982
  • \n
  • Support for ReactiveElasticsearchClient is in the wrong module #47848
  • \n
\n

:notebook_with_decorative_cover: Documentation

\n
    \n
  • Removed property spring.test.webclient.register-rest-template is still documented #48199
  • \n
  • Mention support for detecting AWS ECS in "Deploying to the Cloud" #48170
  • \n
  • Revise AWS section of "Deploying to the Cloud" in reference manual #48163
  • \n
  • Fix typo in PortInUseException Javadoc #48134
  • \n
  • Correct section about required setters in "Type-safe Configuration Properties" #48131
  • \n
  • Use since attribute in configuration properties deprecation consistently #48122
  • \n
  • Document EndpointJsonMapper and management.endpoints.jackson.isolated-json-mapper #48115
  • \n
  • Document support for configuring servlet context init parameters using properties #48112
  • \n
  • Some configuration properties are not documented in the appendix #48095
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1c0e08b Release v4.0.0
  • \n
  • 3487928 Merge branch '3.5.x'
  • \n
  • 29b8e96 Switch make-default in preparation for Spring Boot 4.0.0
  • \n
  • 88da0dd Merge branch '3.5.x'
  • \n
  • 56feeaa Next development version (v3.5.9-SNAPSHOT)
  • \n
  • 3becdc7 Move server.error properties to spring.web.error
  • \n
  • 2b30632 Merge branch '3.5.x'
  • \n
  • 4f03b44 Merge branch '3.4.x' into 3.5.x
  • \n
  • 3d15c13 Next development version (v3.4.13-SNAPSHOT)
  • \n
  • dc140df Upgrade to Spring Framework 7.0.1
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2168/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2171", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/events", + "html_url": "https://github.com/hub4j/github-api/pull/2171", + "id": 3678910531, + "node_id": "PR_kwDOAAlq-s62PDmc", + "number": 2171, + "title": "Chore(deps): Bump com.squareup.okhttp3:okhttp from 4.12.0 to 5.3.2", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-12-01T02:11:39Z", + "updated_at": "2026-01-01T02:00:03Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2171", + "html_url": "https://github.com/hub4j/github-api/pull/2171", + "diff_url": "https://github.com/hub4j/github-api/pull/2171.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2171.patch", + "merged_at": null + }, + "body": "Bumps [com.squareup.okhttp3:okhttp](https://github.com/square/okhttp) from 4.12.0 to 5.3.2.\n
\nChangelog\n

Sourced from com.squareup.okhttp3:okhttp's changelog.

\n
\n

Version 5.3.2

\n

2025-11-18

\n
    \n
  • \n

    Fix: Don't delay triggering timeouts. In Okio 3.16.0 we introduced a regression that caused\ntimeouts to fire later than they were supposed to.

    \n
  • \n
  • \n

    Upgrade: [Okio 3.16.4][okio_3_16_4].

    \n
  • \n
\n

Version 5.3.1

\n

2025-11-16

\n

This release is the same as 5.3.0. Okio 3.16.3 didn't have a necessary fix!

\n
    \n
  • Upgrade: [Okio 3.16.3][okio_3_16_3].
  • \n
\n

Version 5.3.0

\n

2025-10-30

\n
    \n
  • \n

    New: Add tags to Call, including computable tags. Use this to attach application-specific\nmetadata to a Call in an EventListener or Interceptor. The tag can be read in any other\nEventListener or Interceptor.

    \n
      override fun intercept(chain: Interceptor.Chain): Response {\n    chain.call().tag(MyAnalyticsTag::class) {\n      MyAnalyticsTag(...)\n    }\n
    return chain.proceed(chain.request())\n
    \n

    }\n

    \n
  • \n
  • \n

    New: Support request bodies on HTTP/1.1 connection upgrades.

    \n
  • \n
  • \n

    New: EventListener.plus() makes it easier to observe events in multiple listeners.

    \n
  • \n
  • \n

    Fix: Don't spam logs with ‘Method isLoggable in android.util.Log not mocked.’ when using\nOkHttp in Robolectric and Paparazzi tests.

    \n
  • \n
  • \n

    Upgrade: [Kotlin 2.2.21][kotlin_2_2_21].

    \n
  • \n
  • \n

    Upgrade: [Okio 3.16.2][okio_3_16_2].

    \n
  • \n
  • \n

    Upgrade: [ZSTD-KMP 0.4.0][zstd_kmp_0_4_0]. This update fixes a bug that caused APKs to fail\n[16 KB ELF alignment checks][elf_alignment].

    \n
  • \n
\n

Version 5.2.3

\n

2025-11-18

\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.squareup.okhttp3:okhttp&package-manager=maven&previous-version=4.12.0&new-version=5.3.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2171/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2153", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/events", + "html_url": "https://github.com/hub4j/github-api/pull/2153", + "id": 3547050854, + "node_id": "PR_kwDOAAlq-s6vY_6j", + "number": 2153, + "title": "(Spike) Move v2 to new package. ", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-10-24T00:06:08Z", + "updated_at": "2025-10-24T00:06:08Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2153", + "html_url": "https://github.com/hub4j/github-api/pull/2153", + "diff_url": "https://github.com/hub4j/github-api/pull/2153.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2153.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\nThis is spike considering what it would look like if we published each new version in it's own package. \r\nThe most complex code should be move to internal for reuse in both v1 and v2 public apis. \r\n\r\nMove most v2 to new package. \r\nThen pull rc1 back into existing package. \r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2153/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2146", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/events", + "html_url": "https://github.com/hub4j/github-api/pull/2146", + "id": 3453632014, + "node_id": "PR_kwDOAAlq-s6qgk4K", + "number": 2146, + "title": "[feat] Add support for the device authentication flow for github apps", + "user": { + "login": "PierreBtz", + "id": 9881659, + "node_id": "MDQ6VXNlcjk4ODE2NTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9881659?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/PierreBtz", + "html_url": "https://github.com/PierreBtz", + "followers_url": "https://api.github.com/users/PierreBtz/followers", + "following_url": "https://api.github.com/users/PierreBtz/following{/other_user}", + "gists_url": "https://api.github.com/users/PierreBtz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/PierreBtz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/PierreBtz/subscriptions", + "organizations_url": "https://api.github.com/users/PierreBtz/orgs", + "repos_url": "https://api.github.com/users/PierreBtz/repos", + "events_url": "https://api.github.com/users/PierreBtz/events{/privacy}", + "received_events_url": "https://api.github.com/users/PierreBtz/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-09-25T13:25:37Z", + "updated_at": "2025-09-26T09:05:45Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": true, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2146", + "html_url": "https://github.com/hub4j/github-api/pull/2146", + "diff_url": "https://github.com/hub4j/github-api/pull/2146.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2146.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\n*Opening as a draft since the tests are not ready and I have questions about them*\r\n\r\nThis PR provides support for the device authentication flow for github apps, as documented in https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app#using-the-device-flow-to-generate-a-user-access-token (access token generation) and here https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/refreshing-user-access-tokens#refreshing-a-user-access-token-with-a-refresh-token (refresh token).\r\n\r\nThis is needed when developing java CLIs that need to authenticate to GitHub through a GitHub application.\r\n\r\nReproducing here the documentation to help with the understanding:\r\n\r\n```\r\n In order to authenticate to GitHub as an user using the device flow of your GitHub App, you need to use the <<>>\r\n authentication provider that will take care of retrieving a user access token and refresh it when needed for you.\r\n You need to handle two things by yourself:\r\n 1. You need to provide a <<>> that will be called when a new user access token is retrieved (either on initial creation or on refresh).\r\n It is up to you to store the credential object securely the library does not take care of that.\r\n 2. You need to provide a <<>> that will be called when a user interaction is needed to complete the device flow.\r\n The library provides a basic implementation <<>> that will log the instructions to the console but you could imagine a more complex\r\n implementation that would for example open the user browser automatically (or call some automation that will input the information automatically for instance).\r\n\r\n Here is a complete example to get started:\r\n\r\n+-----+\r\n var clientId = \"\";\r\n var objectMapper = new ObjectMapper();\r\n objectMapper.registerModule(new JavaTimeModule());\r\n\r\n // for demo purpose only, this is not proper secret management!!!\r\n var appCredentialsFile = Path.of(\"/tmp/github-app-credentials.json\");\r\n DeviceFlowGithubAppCredentials appCredentials;\r\n if (Files.exists(appCredentialsFile)) {\r\n appCredentials = objectMapper.readValue(appCredentialsFile.toFile(), DeviceFlowGithubAppCredentials.class);\r\n } else {\r\n appCredentials = EMPTY_CREDENTIALS;\r\n }\r\n\r\n var gh = new GitHubBuilder().withAuthorizationProvider(\r\n new DeviceFlowGithubAppAuthorizationProvider(clientId, appCredentials, ac -> {\r\n // in this basic example, we serialize the credentials as json to a file\r\n // this is not proper secret management and you should probably use something more secure\r\n try {\r\n objectMapper.writeValue(appCredentialsFile.toFile(), ac);\r\n } catch (IOException e) {\r\n throw new RuntimeException(e);\r\n }\r\n }, new LoggerDeviceFlowGithubAppInputManager())).build();\r\n+-----+\r\n``` \r\n\r\nOpened questions I have:\r\n\r\n* I'm not too happy that the main class (`DeviceFlowGithubAppAuthorizationProvider`) cannot be in the authorization package (needs access to a package protected method).\r\n* I'm not too sure how to process with tests: I cannot use the recording method since the authorization process is not going through the api endpoints but through the UI ones (`https://github.com/...`). I didn't find anything in the base class test that would help with this. Also I have to use the `.setRawUrlPath(\"https://github.com/login/oauth/access_token\")` which cannot be intercepted as is obviously. This is not only a problem for tests but also for on prem Github and my current thinking is that I need to enrich the API and the testing framework to support a `uiUrl` that would be the equivalent of the `apiUrl` for the UI.\r\n\r\nSince this starts to widen the impact of this change I'm opening this draft to discuss the potential approaches before going further.\r\n\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2146/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2099", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/events", + "html_url": "https://github.com/hub4j/github-api/pull/2099", + "id": 3037229321, + "node_id": "PR_kwDOAAlq-s6U0PLi", + "number": 2099, + "title": "Refactor pagination", + "user": { + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-05-03T07:23:17Z", + "updated_at": "2025-09-20T08:14:09Z", + "closed_at": null, + "author_association": "MEMBER", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2099", + "html_url": "https://github.com/hub4j/github-api/pull/2099", + "diff_url": "https://github.com/hub4j/github-api/pull/2099.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2099.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2099/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1986", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/events", + "html_url": "https://github.com/hub4j/github-api/pull/1986", + "id": 2697030696, + "node_id": "PR_kwDOAAlq-s6DSCb3", + "number": 1986, + "title": "initial feature add", + "user": { + "login": "gitPushPuppets", + "id": 49495486, + "node_id": "MDQ6VXNlcjQ5NDk1NDg2", + "avatar_url": "https://avatars.githubusercontent.com/u/49495486?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/gitPushPuppets", + "html_url": "https://github.com/gitPushPuppets", + "followers_url": "https://api.github.com/users/gitPushPuppets/followers", + "following_url": "https://api.github.com/users/gitPushPuppets/following{/other_user}", + "gists_url": "https://api.github.com/users/gitPushPuppets/gists{/gist_id}", + "starred_url": "https://api.github.com/users/gitPushPuppets/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/gitPushPuppets/subscriptions", + "organizations_url": "https://api.github.com/users/gitPushPuppets/orgs", + "repos_url": "https://api.github.com/users/gitPushPuppets/repos", + "events_url": "https://api.github.com/users/gitPushPuppets/events{/privacy}", + "received_events_url": "https://api.github.com/users/gitPushPuppets/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 4789870627, + "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", + "name": "work-abandoned", + "color": "000000", + "default": false, + "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2024-11-27T04:41:38Z", + "updated_at": "2025-09-04T14:41:30Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "draft": true, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/1986", + "html_url": "https://github.com/hub4j/github-api/pull/1986", + "diff_url": "https://github.com/hub4j/github-api/pull/1986.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/1986.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1986/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2108", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/events", + "html_url": "https://github.com/hub4j/github-api/pull/2108", + "id": 3148050956, + "node_id": "PR_kwDOAAlq-s6ancHC", + "number": 2108, + "title": "Add missing properties to GHAsset and GHRelease", + "user": { + "login": "solonovamax", + "id": 46940694, + "node_id": "MDQ6VXNlcjQ2OTQwNjk0", + "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/solonovamax", + "html_url": "https://github.com/solonovamax", + "followers_url": "https://api.github.com/users/solonovamax/followers", + "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", + "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", + "organizations_url": "https://api.github.com/users/solonovamax/orgs", + "repos_url": "https://api.github.com/users/solonovamax/repos", + "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", + "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 4, + "created_at": "2025-06-15T20:42:27Z", + "updated_at": "2025-07-30T16:23:40Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2108", + "html_url": "https://github.com/hub4j/github-api/pull/2108", + "diff_url": "https://github.com/hub4j/github-api/pull/2108.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2108.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\nAdds missing fields for the `GHAsset` and `GHRelease` classes.\r\nSee: https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28\r\n\r\nI didn't bother adding tests because it's just new fields/getters. \r\n\r\nFixes #2102\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2108/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2098", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/events", + "html_url": "https://github.com/hub4j/github-api/pull/2098", + "id": 3033530320, + "node_id": "PR_kwDOAAlq-s6Un7vp", + "number": 2098, + "title": "Add polymorphic deserialization for the GHAppInstallation account field", + "user": { + "login": "anujhydrabadi", + "id": 129152617, + "node_id": "U_kgDOB7K2aQ", + "avatar_url": "https://avatars.githubusercontent.com/u/129152617?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anujhydrabadi", + "html_url": "https://github.com/anujhydrabadi", + "followers_url": "https://api.github.com/users/anujhydrabadi/followers", + "following_url": "https://api.github.com/users/anujhydrabadi/following{/other_user}", + "gists_url": "https://api.github.com/users/anujhydrabadi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anujhydrabadi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anujhydrabadi/subscriptions", + "organizations_url": "https://api.github.com/users/anujhydrabadi/orgs", + "repos_url": "https://api.github.com/users/anujhydrabadi/repos", + "events_url": "https://api.github.com/users/anujhydrabadi/events{/privacy}", + "received_events_url": "https://api.github.com/users/anujhydrabadi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 0, + "created_at": "2025-05-01T09:37:33Z", + "updated_at": "2025-05-01T09:38:01Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": true, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2098", + "html_url": "https://github.com/hub4j/github-api/pull/2098", + "diff_url": "https://github.com/hub4j/github-api/pull/2098.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2098.patch", + "merged_at": null + }, + "body": "# Description\r\nFixes #1497 \r\nRecovering PR #1522 \r\nThere is a problem: this works fine for events, but when deserializing App Installation GET API responses, the `type` field (based on which we identify whether the `account` is User or Org) gets unset to `null`. The `account` polymorphic deserialization part works fine though. Perhaps there is a difference in how we are using Jackson at both places (events vs regular API responses), but I have not been able to figure it out yet. \r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2098/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2065", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/events", + "html_url": "https://github.com/hub4j/github-api/pull/2065", + "id": 2934401236, + "node_id": "PR_kwDOAAlq-s6PaV84", + "number": 2065, + "title": "Chore(deps): Bump spotbugs.version from 4.8.6 to 4.9.3", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2025-03-20T07:38:54Z", + "updated_at": "2025-05-01T02:35:32Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2065", + "html_url": "https://github.com/hub4j/github-api/pull/2065", + "diff_url": "https://github.com/hub4j/github-api/pull/2065.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2065.patch", + "merged_at": null + }, + "body": "Bumps `spotbugs.version` from 4.8.6 to 4.9.3.\nUpdates `com.github.spotbugs:spotbugs-annotations` from 4.8.6 to 4.9.3\n
\nRelease notes\n

Sourced from com.github.spotbugs:spotbugs-annotations's releases.

\n
\n

SpotBugs 4.9.3

\n

CHANGELOG

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

CHECKSUM

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
filechecksum (sha256)
spotbugs-4.9.3-javadoc.jar3d0d103724cbaaffc27f17d28d9b17f8972fb378397f8f04f6f05268bde110b7
spotbugs-4.9.3-sources.jar0aa5c905469eb578a3dbe09dcf704cf892568610cdb58550b142d658e37a29d4
spotbugs-4.9.3.tgzd464d56050cf1dbda032e9482e1188f7cd7b7646eaff79c2e6cbe4d6822f4d9f
spotbugs-4.9.3.zip3b2dcf86f97d701700121cee4bd22305d4b54fd9ed7666fa0f53933a4ab92251
spotbugs-annotations-4.9.3-javadoc.jar5fce79dc01a97aae84670922dd3581aa621b980535e4f6695a71db553dcb9cb4
spotbugs-annotations-4.9.3-sources.jar990ad9f3500499a99466b7c1e01284f4f41d1499358e7dc38c8defc59dab114c
spotbugs-annotations.jar13532bfe2f45fcd491432221df72d9cd0efb8f987c9245e12befa192c8925ce3
spotbugs-ant-4.9.3-javadoc.jar346eb5215f9d157ab46c3216a783416e2fa2e8c9d4458143267fb518f81c7d77
spotbugs-ant-4.9.3-sources.jar591073402e4110093a380169acd3f33b26c2f893c2eaed5a6460d9be0b26014e
spotbugs-ant.jar3a6f453696294d5314e648d4891d35e34315e11cb63c758a1601021cc0d803d1
spotbugs.jar710e8b98f1ae23cdb71aaaf07e8d71fb63b44f2bbbaa1df3c3ba0de62aba6ec9
test-harness-4.9.3-javadoc.jar57f51147e289b5c6493f844beaac97cde57773a1d16ce064e9deb8963b3f99ce
test-harness-4.9.3-sources.jar22688f14ef808cde65cc46e86d41c617fc397fc4967516006a73ce8bad658b9f
test-harness-4.9.3.jar9bf5bba9546e4f89032006261dd2921a79fc3044e473ee1fa73af870cb43da15
test-harness-core-4.9.3-javadoc.jar15aac012f3a8c8d6600075efe824aecab8233778e58345fecca65d7970256311
test-harness-core-4.9.3-sources.jar13825de35190089490c7e290b52bafe6a9b08ab431177c0191dae9cf2a88a55d
test-harness-core-4.9.3.jar3c74cc6d2d6f999d403f00f97685587e617d2bf1bfc348bbd0597e785c83feec
test-harness-jupiter-4.9.3-javadoc.jara8f276fb01743b8dc9f8cd6b517ae0748e38f673e31615a923c9c61f5fd9de58
test-harness-jupiter-4.9.3-sources.jar0aefbc5c8bd406e5dc0b1d59bc3afc6889c02010d486b22242f4f19a1a935800
test-harness-jupiter-4.9.3.jar0e9509de32f8fbc94cf088dbee80394fa93807a766532568e652cd622ce737c8
\n

SpotBugs 4.9.2

\n

CHANGELOG

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from com.github.spotbugs:spotbugs-annotations's changelog.

\n
\n

4.9.3 - 2025-03-14

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

4.9.2 - 2025-03-01

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n
    \n
  • Removed the TLW_TWO_LOCK_NOTIFY, LI_LAZY_INIT_INSTANCE, BRSA_BAD_RESULTSET_ACCESS, BC_NULL_INSTANCEOF, NP_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR and RCN_REDUNDANT_CHECKED_NULL_COMPARISON deprecated bug patterns.
  • \n
\n

4.9.1 - 2025-02-02

\n

Added

\n
    \n
  • New detector SharedVariableAtomicityDetector for new bug types AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE, AT_NONATOMIC_64BIT_PRIMITIVE and AT_STALE_THREAD_WRITE_OF_PRIMITIVE (See SEI CERT rules VNA00-J, VNA02-J and VNA05-J).
  • \n
  • New detector FindHiddenMethod for bug type HSM_HIDING_METHOD. This bug is reported whenever a subclass method hides the static method of super class. (See SEI CERT MET07-J).
  • \n
\n

Fixed

\n
    \n
  • Fixed the parsing of generics methods in ThrowingExceptions (#3267)
  • \n
  • Accept the 1st parameter of java.util.concurrent.CompletableFuture's completeOnTimeout(), getNow() and obtrudeValue() functions as nullable (#1001).
  • \n
  • Fixed the analysis error when FindReturnRef was checking instructions corresponding to a CFG branch that was optimized away (#3266)
  • \n
  • Added execute file permission to files in the distribution archive (#3274)
  • \n
  • Fixed a stack overflow in MultipleInstantiationsOfSingletons when a singleton initializer makes recursive calls (#3280)
  • \n
  • Fixed NPE in FindReturnRef on inner class fields (#3283)
  • \n
  • Fixed NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE false positive when add edu.umd.cs.findbugs.annotations.Nullable (#3243)
  • \n
\n

4.9.0 - 2025-01-15

\n

Added

\n
    \n
  • Updated the SuppressFBWarnings annotation to support finer grained bug suppressions (#3102)
  • \n
  • SimpleDateFormat, DateTimeFormatter, FastDateFormat string check for bad combinations of flag formatting (#637)
  • \n
  • New detector ResourceInMultipleThreadsDetector and introduced new bug type:\n
      \n
    • AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD is reported in case of unsafe resource access in multiple threads.
    • \n
    \n
  • \n
\n

Fixed

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1f6a719 release v4.9.3
  • \n
  • 30f22d8 fix(deps): update junit5 monorepo to v5.12.1 (#3357)
  • \n
  • 4b0cfff cleanup: remove redundant implementations of getDetectorClassName() (#3352)
  • \n
  • bd996f4 chore(deps): update dependency com.diffplug.gradle:goomph to v4.3.0 (#3355)
  • \n
  • e46c442 Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3353)
  • \n
  • 7450785 Introduce UselessSuppressionDetector to report the useless suppressions
  • \n
  • 830e10c fix(deps): update dependency checkstyle to v10.21.4 (#3347)
  • \n
  • b5c7686 fix(deps): update dependency org.checkerframework:checker-qual to v3.49.1 (#3...
  • \n
  • c4b59b1 chore(deps): update sphinxdoc/sphinx docker tag to v8.2.3 (#3344)
  • \n
  • 7fd6fa4 fix(deps): update mockito monorepo to v5.16.0 (#3345)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\nUpdates `com.github.spotbugs:spotbugs` from 4.8.6 to 4.9.3\n
\nRelease notes\n

Sourced from com.github.spotbugs:spotbugs's releases.

\n
\n

SpotBugs 4.9.3

\n

CHANGELOG

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

CHECKSUM

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
filechecksum (sha256)
spotbugs-4.9.3-javadoc.jar3d0d103724cbaaffc27f17d28d9b17f8972fb378397f8f04f6f05268bde110b7
spotbugs-4.9.3-sources.jar0aa5c905469eb578a3dbe09dcf704cf892568610cdb58550b142d658e37a29d4
spotbugs-4.9.3.tgzd464d56050cf1dbda032e9482e1188f7cd7b7646eaff79c2e6cbe4d6822f4d9f
spotbugs-4.9.3.zip3b2dcf86f97d701700121cee4bd22305d4b54fd9ed7666fa0f53933a4ab92251
spotbugs-annotations-4.9.3-javadoc.jar5fce79dc01a97aae84670922dd3581aa621b980535e4f6695a71db553dcb9cb4
spotbugs-annotations-4.9.3-sources.jar990ad9f3500499a99466b7c1e01284f4f41d1499358e7dc38c8defc59dab114c
spotbugs-annotations.jar13532bfe2f45fcd491432221df72d9cd0efb8f987c9245e12befa192c8925ce3
spotbugs-ant-4.9.3-javadoc.jar346eb5215f9d157ab46c3216a783416e2fa2e8c9d4458143267fb518f81c7d77
spotbugs-ant-4.9.3-sources.jar591073402e4110093a380169acd3f33b26c2f893c2eaed5a6460d9be0b26014e
spotbugs-ant.jar3a6f453696294d5314e648d4891d35e34315e11cb63c758a1601021cc0d803d1
spotbugs.jar710e8b98f1ae23cdb71aaaf07e8d71fb63b44f2bbbaa1df3c3ba0de62aba6ec9
test-harness-4.9.3-javadoc.jar57f51147e289b5c6493f844beaac97cde57773a1d16ce064e9deb8963b3f99ce
test-harness-4.9.3-sources.jar22688f14ef808cde65cc46e86d41c617fc397fc4967516006a73ce8bad658b9f
test-harness-4.9.3.jar9bf5bba9546e4f89032006261dd2921a79fc3044e473ee1fa73af870cb43da15
test-harness-core-4.9.3-javadoc.jar15aac012f3a8c8d6600075efe824aecab8233778e58345fecca65d7970256311
test-harness-core-4.9.3-sources.jar13825de35190089490c7e290b52bafe6a9b08ab431177c0191dae9cf2a88a55d
test-harness-core-4.9.3.jar3c74cc6d2d6f999d403f00f97685587e617d2bf1bfc348bbd0597e785c83feec
test-harness-jupiter-4.9.3-javadoc.jara8f276fb01743b8dc9f8cd6b517ae0748e38f673e31615a923c9c61f5fd9de58
test-harness-jupiter-4.9.3-sources.jar0aefbc5c8bd406e5dc0b1d59bc3afc6889c02010d486b22242f4f19a1a935800
test-harness-jupiter-4.9.3.jar0e9509de32f8fbc94cf088dbee80394fa93807a766532568e652cd622ce737c8
\n

SpotBugs 4.9.2

\n

CHANGELOG

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from com.github.spotbugs:spotbugs's changelog.

\n
\n

4.9.3 - 2025-03-14

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

4.9.2 - 2025-03-01

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n
    \n
  • Removed the TLW_TWO_LOCK_NOTIFY, LI_LAZY_INIT_INSTANCE, BRSA_BAD_RESULTSET_ACCESS, BC_NULL_INSTANCEOF, NP_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR and RCN_REDUNDANT_CHECKED_NULL_COMPARISON deprecated bug patterns.
  • \n
\n

4.9.1 - 2025-02-02

\n

Added

\n
    \n
  • New detector SharedVariableAtomicityDetector for new bug types AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE, AT_NONATOMIC_64BIT_PRIMITIVE and AT_STALE_THREAD_WRITE_OF_PRIMITIVE (See SEI CERT rules VNA00-J, VNA02-J and VNA05-J).
  • \n
  • New detector FindHiddenMethod for bug type HSM_HIDING_METHOD. This bug is reported whenever a subclass method hides the static method of super class. (See SEI CERT MET07-J).
  • \n
\n

Fixed

\n
    \n
  • Fixed the parsing of generics methods in ThrowingExceptions (#3267)
  • \n
  • Accept the 1st parameter of java.util.concurrent.CompletableFuture's completeOnTimeout(), getNow() and obtrudeValue() functions as nullable (#1001).
  • \n
  • Fixed the analysis error when FindReturnRef was checking instructions corresponding to a CFG branch that was optimized away (#3266)
  • \n
  • Added execute file permission to files in the distribution archive (#3274)
  • \n
  • Fixed a stack overflow in MultipleInstantiationsOfSingletons when a singleton initializer makes recursive calls (#3280)
  • \n
  • Fixed NPE in FindReturnRef on inner class fields (#3283)
  • \n
  • Fixed NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE false positive when add edu.umd.cs.findbugs.annotations.Nullable (#3243)
  • \n
\n

4.9.0 - 2025-01-15

\n

Added

\n
    \n
  • Updated the SuppressFBWarnings annotation to support finer grained bug suppressions (#3102)
  • \n
  • SimpleDateFormat, DateTimeFormatter, FastDateFormat string check for bad combinations of flag formatting (#637)
  • \n
  • New detector ResourceInMultipleThreadsDetector and introduced new bug type:\n
      \n
    • AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD is reported in case of unsafe resource access in multiple threads.
    • \n
    \n
  • \n
\n

Fixed

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1f6a719 release v4.9.3
  • \n
  • 30f22d8 fix(deps): update junit5 monorepo to v5.12.1 (#3357)
  • \n
  • 4b0cfff cleanup: remove redundant implementations of getDetectorClassName() (#3352)
  • \n
  • bd996f4 chore(deps): update dependency com.diffplug.gradle:goomph to v4.3.0 (#3355)
  • \n
  • e46c442 Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3353)
  • \n
  • 7450785 Introduce UselessSuppressionDetector to report the useless suppressions
  • \n
  • 830e10c fix(deps): update dependency checkstyle to v10.21.4 (#3347)
  • \n
  • b5c7686 fix(deps): update dependency org.checkerframework:checker-qual to v3.49.1 (#3...
  • \n
  • c4b59b1 chore(deps): update sphinxdoc/sphinx docker tag to v8.2.3 (#3344)
  • \n
  • 7fd6fa4 fix(deps): update mockito monorepo to v5.16.0 (#3345)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2065/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1917", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/events", + "html_url": "https://github.com/hub4j/github-api/pull/1917", + "id": 2492934092, + "node_id": "PR_kwDOAAlq-s55wQBP", + "number": 1917, + "title": "Support setting & checking AutomatedSecurityFixes", + "user": { + "login": "ranma2913", + "id": 4295880, + "node_id": "MDQ6VXNlcjQyOTU4ODA=", + "avatar_url": "https://avatars.githubusercontent.com/u/4295880?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ranma2913", + "html_url": "https://github.com/ranma2913", + "followers_url": "https://api.github.com/users/ranma2913/followers", + "following_url": "https://api.github.com/users/ranma2913/following{/other_user}", + "gists_url": "https://api.github.com/users/ranma2913/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ranma2913/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ranma2913/subscriptions", + "organizations_url": "https://api.github.com/users/ranma2913/orgs", + "repos_url": "https://api.github.com/users/ranma2913/repos", + "events_url": "https://api.github.com/users/ranma2913/events{/privacy}", + "received_events_url": "https://api.github.com/users/ranma2913/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 4789870627, + "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", + "name": "work-abandoned", + "color": "000000", + "default": false, + "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2024-08-28T20:27:53Z", + "updated_at": "2025-01-14T18:08:46Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "draft": true, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/1917", + "html_url": "https://github.com/hub4j/github-api/pull/1917", + "diff_url": "https://github.com/hub4j/github-api/pull/1917.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/1917.patch", + "merged_at": null + }, + "body": "https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#check-if-automated-security-fixes-are-enabled-for-a-repository\r\n\r\n# Description\r\n\r\nFixes #1916\r\n\r\nThis change will support Support Endpoints:\r\n\r\n https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#check-if-automated-security-fixes-are-enabled-for-a-repository\r\n https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#enable-automated-security-fixes\r\n https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#disable-automated-security-fixes\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1917/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1787", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/events", + "html_url": "https://github.com/hub4j/github-api/pull/1787", + "id": 2122147185, + "node_id": "PR_kwDOAAlq-s5mNyo1", + "number": 1787, + "title": "Code Scanning API support", + "user": { + "login": "wwong", + "id": 1160302, + "node_id": "MDQ6VXNlcjExNjAzMDI=", + "avatar_url": "https://avatars.githubusercontent.com/u/1160302?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/wwong", + "html_url": "https://github.com/wwong", + "followers_url": "https://api.github.com/users/wwong/followers", + "following_url": "https://api.github.com/users/wwong/following{/other_user}", + "gists_url": "https://api.github.com/users/wwong/gists{/gist_id}", + "starred_url": "https://api.github.com/users/wwong/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/wwong/subscriptions", + "organizations_url": "https://api.github.com/users/wwong/orgs", + "repos_url": "https://api.github.com/users/wwong/repos", + "events_url": "https://api.github.com/users/wwong/events{/privacy}", + "received_events_url": "https://api.github.com/users/wwong/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 4789870627, + "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", + "name": "work-abandoned", + "color": "000000", + "default": false, + "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 6, + "created_at": "2024-02-07T04:08:42Z", + "updated_at": "2024-07-01T19:15:15Z", + "closed_at": null, + "author_association": "NONE", + "type": null, + "active_lock_reason": null, + "draft": true, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/1787", + "html_url": "https://github.com/hub4j/github-api/pull/1787", + "diff_url": "https://github.com/hub4j/github-api/pull/1787.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/1787.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\nFollowing up on open comments from https://github.com/hub4j/github-api/pull/1142 and https://github.com/cortexapps/github-api/pull/8\r\n\r\nI don't currently have access to the security alerts for the example test repo (https://github.com/hub4j-test-org/Pixi), so the response fields might be slightly outdated until I (or someone else) can re-record the wiremock samples.\r\n\r\nStart of an (incomplete) implementation for https://github.com/hub4j/github-api/issues/1133 (will add more endpoints in a later PR)\r\n\r\nThis change adds the read-only calls for the following endpoints, as they were originally implemented in previous PRs:\r\n* [List code scanning alerts for a repository](https://docs.github.com/en/rest/code-scanning/code-scanning?apiVersion=2022-11-28#list-code-scanning-alerts-for-a-repository)\r\n* [Get a code scanning alert](https://docs.github.com/en/rest/code-scanning/code-scanning?apiVersion=2022-11-28#get-a-code-scanning-alert)\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1787/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1730", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/events", + "html_url": "https://github.com/hub4j/github-api/pull/1730", + "id": 1952864832, + "node_id": "PR_kwDOAAlq-s5dTnjz", + "number": 1730, + "title": "Paginator", + "user": { + "login": "anujhydrabadi", + "id": 129152617, + "node_id": "U_kgDOB7K2aQ", + "avatar_url": "https://avatars.githubusercontent.com/u/129152617?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anujhydrabadi", + "html_url": "https://github.com/anujhydrabadi", + "followers_url": "https://api.github.com/users/anujhydrabadi/followers", + "following_url": "https://api.github.com/users/anujhydrabadi/following{/other_user}", + "gists_url": "https://api.github.com/users/anujhydrabadi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anujhydrabadi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anujhydrabadi/subscriptions", + "organizations_url": "https://api.github.com/users/anujhydrabadi/orgs", + "repos_url": "https://api.github.com/users/anujhydrabadi/repos", + "events_url": "https://api.github.com/users/anujhydrabadi/events{/privacy}", + "received_events_url": "https://api.github.com/users/anujhydrabadi/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 4789870627, + "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", + "name": "work-abandoned", + "color": "000000", + "default": false, + "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 3, + "created_at": "2023-10-19T18:48:14Z", + "updated_at": "2024-06-20T03:14:40Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": true, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/1730", + "html_url": "https://github.com/hub4j/github-api/pull/1730", + "diff_url": "https://github.com/hub4j/github-api/pull/1730.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/1730.patch", + "merged_at": null + }, + "body": "# Description\r\n\r\n`paginator()` method in `PagedIterable` to support starting at a particular page, and next, previous, first, last and jumping to any particular page, along with a few other supporting methods. Made in parallel to `iterator()` method so as to keep backward compatibility, but supports all functionality that `iterator()` provides.\r\n\r\nFixes #348 \r\nFixes #1614 \r\nFixes #448 \r\nFixes #1197 \r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/1730/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + } + ] +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/1-user.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/1-user.json new file mode 100644 index 0000000000..5e6914f8ac --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/1-user.json @@ -0,0 +1,48 @@ +{ + "id": "10a0d673-1b68-4b43-a693-0aa4af0ce268", + "name": "user", + "request": { + "url": "/user", + "method": "GET", + "headers": { + "Accept": { + "equalTo": "application/vnd.github+json" + } + } + }, + "response": { + "status": 200, + "bodyFileName": "1-user.json", + "headers": { + "Date": "Sun, 25 Jan 2026 19:38:35 GMT", + "Content-Type": "application/json; charset=utf-8", + "Cache-Control": "private, max-age=60, s-maxage=60", + "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", + "ETag": "W/\"15d7e1ad92a3639b979fc55254902e63ee0bfa5c8f6766990bf989044d491ce1\"", + "Last-Modified": "Sat, 24 Jan 2026 22:07:12 GMT", + "X-OAuth-Scopes": "repo", + "X-Accepted-OAuth-Scopes": "", + "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", + "X-GitHub-Media-Type": "github.v3; format=json", + "x-github-api-version-selected": "2022-11-28", + "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", + "Access-Control-Allow-Origin": "*", + "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options": "deny", + "X-Content-Type-Options": "nosniff", + "X-XSS-Protection": "0", + "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", + "Content-Security-Policy": "default-src 'none'", + "Server": "github.com", + "X-RateLimit-Limit": "5000", + "X-RateLimit-Remaining": "4970", + "X-RateLimit-Reset": "1769372833", + "X-RateLimit-Used": "30", + "X-RateLimit-Resource": "core", + "X-GitHub-Request-Id": "F729:24E46A:660091E:5785FC3:6976713B" + } + }, + "uuid": "10a0d673-1b68-4b43-a693-0aa4af0ce268", + "persistent": true, + "insertionIndex": 1 +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/2-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/2-search_issues.json new file mode 100644 index 0000000000..a1a95a6c55 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/2-search_issues.json @@ -0,0 +1,49 @@ +{ + "id": "ec183035-31a6-476e-b33b-99fbc7df7a18", + "name": "search_issues", + "request": { + "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Apr+is%3Aopen", + "method": "GET", + "headers": { + "Accept": { + "equalTo": "application/vnd.github+json" + } + } + }, + "response": { + "status": 200, + "bodyFileName": "2-search_issues.json", + "headers": { + "Date": "Sun, 25 Jan 2026 19:38:36 GMT", + "Content-Type": "application/json; charset=utf-8", + "Cache-Control": "no-cache", + "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", + "X-OAuth-Scopes": "repo", + "X-Accepted-OAuth-Scopes": "", + "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", + "X-GitHub-Media-Type": "github.v3; format=json", + "x-github-api-version-selected": "2022-11-28", + "X-RateLimit-Limit": "30", + "X-RateLimit-Remaining": "29", + "X-RateLimit-Reset": "1769369976", + "X-RateLimit-Used": "1", + "X-RateLimit-Resource": "search", + "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", + "Access-Control-Allow-Origin": "*", + "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options": "deny", + "X-Content-Type-Options": "nosniff", + "X-XSS-Protection": "0", + "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", + "Content-Security-Policy": "default-src 'none'", + "Server": "github.com", + "X-GitHub-Request-Id": "F72B:121DD1:616A142:52B0E01:6976713B" + } + }, + "uuid": "ec183035-31a6-476e-b33b-99fbc7df7a18", + "persistent": true, + "scenarioName": "scenario-1-search-issues", + "requiredScenarioState": "Started", + "newScenarioState": "scenario-1-search-issues-2", + "insertionIndex": 2 +} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/3-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/3-search_issues.json new file mode 100644 index 0000000000..d7e7f00bf6 --- /dev/null +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/3-search_issues.json @@ -0,0 +1,48 @@ +{ + "id": "237fcf1d-1d48-4f46-8ea8-4a6db6c14953", + "name": "search_issues", + "request": { + "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Apr+is%3Aopen", + "method": "GET", + "headers": { + "Accept": { + "equalTo": "application/vnd.github+json" + } + } + }, + "response": { + "status": 200, + "bodyFileName": "3-search_issues.json", + "headers": { + "Date": "Sun, 25 Jan 2026 19:38:37 GMT", + "Content-Type": "application/json; charset=utf-8", + "Cache-Control": "no-cache", + "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", + "X-OAuth-Scopes": "repo", + "X-Accepted-OAuth-Scopes": "", + "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", + "X-GitHub-Media-Type": "github.v3; format=json", + "x-github-api-version-selected": "2022-11-28", + "X-RateLimit-Limit": "30", + "X-RateLimit-Remaining": "28", + "X-RateLimit-Reset": "1769369976", + "X-RateLimit-Used": "2", + "X-RateLimit-Resource": "search", + "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", + "Access-Control-Allow-Origin": "*", + "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options": "deny", + "X-Content-Type-Options": "nosniff", + "X-XSS-Protection": "0", + "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", + "Content-Security-Policy": "default-src 'none'", + "Server": "github.com", + "X-GitHub-Request-Id": "F72C:202497:650445E:56326B6:6976713C" + } + }, + "uuid": "237fcf1d-1d48-4f46-8ea8-4a6db6c14953", + "persistent": true, + "scenarioName": "scenario-1-search-issues", + "requiredScenarioState": "scenario-1-search-issues-2", + "insertionIndex": 3 +} \ No newline at end of file From ba4b6ce5b4f76c24842766c0f1c803b0d2a98f59 Mon Sep 17 00:00:00 2001 From: Sorena Sarabadani Date: Tue, 10 Feb 2026 20:51:23 +0100 Subject: [PATCH 2/5] Update src/test/java/org/kohsuke/github/AppTest.java Co-authored-by: Liam Newman --- src/test/java/org/kohsuke/github/AppTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/org/kohsuke/github/AppTest.java b/src/test/java/org/kohsuke/github/AppTest.java index 9782c8f438..16efcd6bb1 100755 --- a/src/test/java/org/kohsuke/github/AppTest.java +++ b/src/test/java/org/kohsuke/github/AppTest.java @@ -881,6 +881,7 @@ public void testIssueSearchIssuesOnly() { public void testIssueSearchPullRequestsOnly() { PagedSearchIterable r = gitHub.searchIssues() .repo("hub4j", "github-api") + .isIssue() .isPullRequest() .isOpen() .sort(GHIssueSearchBuilder.Sort.UPDATED) From b028b02f6a45282bf6b2c31ddb1e2889e70e0bef Mon Sep 17 00:00:00 2001 From: Sorena Sarabadani Date: Tue, 10 Feb 2026 20:56:52 +0100 Subject: [PATCH 3/5] chore: sanitize search terms before updating search query --- src/main/java/org/kohsuke/github/GHIssueSearchBuilder.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/kohsuke/github/GHIssueSearchBuilder.java b/src/main/java/org/kohsuke/github/GHIssueSearchBuilder.java index 05439b4ea8..d62f7d91d6 100644 --- a/src/main/java/org/kohsuke/github/GHIssueSearchBuilder.java +++ b/src/main/java/org/kohsuke/github/GHIssueSearchBuilder.java @@ -63,6 +63,7 @@ public GHIssueSearchBuilder isClosed() { * @return the gh issue search builder */ public GHIssueSearchBuilder isIssue() { + terms.removeIf("is:pr"::equals); return q("is:issue"); } @@ -90,6 +91,7 @@ public GHIssueSearchBuilder isOpen() { * @return the gh issue search builder */ public GHIssueSearchBuilder isPullRequest() { + terms.removeIf("is:issue"::equals); return q("is:pr"); } From daa5eac591078ba8600f4ec1d86f02f74253684e Mon Sep 17 00:00:00 2001 From: Sorena Sarabadani Date: Tue, 10 Feb 2026 20:57:10 +0100 Subject: [PATCH 4/5] chore: adjust tests --- src/test/java/org/kohsuke/github/AppTest.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/test/java/org/kohsuke/github/AppTest.java b/src/test/java/org/kohsuke/github/AppTest.java index 16efcd6bb1..0e2e46f5af 100755 --- a/src/test/java/org/kohsuke/github/AppTest.java +++ b/src/test/java/org/kohsuke/github/AppTest.java @@ -862,15 +862,19 @@ public void testIssueSearch() { public void testIssueSearchIssuesOnly() { PagedSearchIterable r = gitHub.searchIssues() .repo("hub4j", "github-api") + .isPullRequest() .isIssue() - .isOpen() - .sort(GHIssueSearchBuilder.Sort.UPDATED) + .isClosed() + .sort(GHIssueSearchBuilder.Sort.CREATED) .list(); assertThat(r.getTotalCount(), greaterThan(0)); + int count = 0; for (GHIssue issue : r) { assertThat(issue.getTitle(), notNullValue()); - // Verify it's not a PR (pull_request field should be null) assertThat(issue.getPullRequest(), nullValue()); + if (++count >= 3) { + break; + } } } @@ -883,14 +887,17 @@ public void testIssueSearchPullRequestsOnly() { .repo("hub4j", "github-api") .isIssue() .isPullRequest() - .isOpen() - .sort(GHIssueSearchBuilder.Sort.UPDATED) + .isClosed() + .sort(GHIssueSearchBuilder.Sort.CREATED) .list(); assertThat(r.getTotalCount(), greaterThan(0)); + int count = 0; for (GHIssue issue : r) { assertThat(issue.getTitle(), notNullValue()); - // Verify it's a PR (pull_request field should not be null) assertThat(issue.getPullRequest(), notNullValue()); + if (++count >= 3) { + break; + } } } From fbc13d51f71f604f8c2b3fb1ad858a14c3491166 Mon Sep 17 00:00:00 2001 From: Sorena Sarabadani Date: Tue, 10 Feb 2026 21:18:07 +0100 Subject: [PATCH 5/5] fix: update test snapshots --- .../__files/2-search_issues.json | 2456 +++++++-------- .../__files/3-search_issues.json | 2456 +++++++-------- .../__files/4-search_issues.json | 2652 ---------------- .../__files/5-search_issues.json | 2634 ---------------- .../__files/6-search_issues.json | 2709 ---------------- .../__files/7-search_issues.json | 2739 ----------------- .../__files/8-search_issues.json | 1218 -------- .../mappings/1-user.json | 14 +- .../mappings/2-search_issues.json | 18 +- .../mappings/3-search_issues.json | 18 +- .../mappings/4-search_issues.json | 47 - .../mappings/5-search_issues.json | 47 - .../mappings/6-search_issues.json | 47 - .../mappings/7-search_issues.json | 47 - .../mappings/8-search_issues.json | 47 - .../__files/2-search_issues.json | 2459 +++++++++++---- .../__files/3-search_issues.json | 2459 +++++++++++---- .../mappings/1-user.json | 14 +- .../mappings/2-search_issues.json | 17 +- .../mappings/3-search_issues.json | 17 +- 20 files changed, 6114 insertions(+), 16001 deletions(-) delete mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/4-search_issues.json delete mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/5-search_issues.json delete mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/6-search_issues.json delete mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/7-search_issues.json delete mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/8-search_issues.json delete mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/4-search_issues.json delete mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/5-search_issues.json delete mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/6-search_issues.json delete mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/7-search_issues.json delete mode 100644 src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/8-search_issues.json diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/2-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/2-search_issues.json index 70588b20a1..74d8e9279d 100644 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/2-search_issues.json +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/2-search_issues.json @@ -1,68 +1,49 @@ { - "total_count": 164, + "total_count": 553, "incomplete_results": false, "items": [ { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2181", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2150", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/events", - "html_url": "https://github.com/hub4j/github-api/issues/2181", - "id": 3843541321, - "node_id": "I_kwDOAAlq-s7lF8lJ", - "number": 2181, - "title": "[Feature request] Expose Co-Authored-By Metadata in Commit API", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2150/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2150/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2150/events", + "html_url": "https://github.com/hub4j/github-api/issues/2150", + "id": 3495762524, + "node_id": "I_kwDOAAlq-s7QXRpc", + "number": 2150, + "title": "Add new DYNAMIC event to GHEvent enum", "user": { - "login": "yeikel", - "id": 8935151, - "node_id": "MDQ6VXNlcjg5MzUxNTE=", - "avatar_url": "https://avatars.githubusercontent.com/u/8935151?v=4", + "login": "kkroner8451", + "id": 14809736, + "node_id": "MDQ6VXNlcjE0ODA5NzM2", + "avatar_url": "https://avatars.githubusercontent.com/u/14809736?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/yeikel", - "html_url": "https://github.com/yeikel", - "followers_url": "https://api.github.com/users/yeikel/followers", - "following_url": "https://api.github.com/users/yeikel/following{/other_user}", - "gists_url": "https://api.github.com/users/yeikel/gists{/gist_id}", - "starred_url": "https://api.github.com/users/yeikel/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/yeikel/subscriptions", - "organizations_url": "https://api.github.com/users/yeikel/orgs", - "repos_url": "https://api.github.com/users/yeikel/repos", - "events_url": "https://api.github.com/users/yeikel/events{/privacy}", - "received_events_url": "https://api.github.com/users/yeikel/received_events", + "url": "https://api.github.com/users/kkroner8451", + "html_url": "https://github.com/kkroner8451", + "followers_url": "https://api.github.com/users/kkroner8451/followers", + "following_url": "https://api.github.com/users/kkroner8451/following{/other_user}", + "gists_url": "https://api.github.com/users/kkroner8451/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kkroner8451/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kkroner8451/subscriptions", + "organizations_url": "https://api.github.com/users/kkroner8451/orgs", + "repos_url": "https://api.github.com/users/kkroner8451/repos", + "events_url": "https://api.github.com/users/kkroner8451/events{/privacy}", + "received_events_url": "https://api.github.com/users/kkroner8451/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - }, - { - "id": 1686292366, - "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", - "name": "more information needed", - "color": "9ce1ed", - "default": false, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 1, - "created_at": "2026-01-22T15:48:48Z", - "updated_at": "2026-01-24T21:57:18Z", - "closed_at": null, + "comments": 0, + "created_at": "2025-10-08T14:45:59Z", + "updated_at": "2025-10-23T00:51:33Z", + "closed_at": "2025-10-23T00:51:33Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, @@ -77,9 +58,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Use Case:** \n\nIdentify all contributors to a commit, including those listed as `Co-Authored-By` in the commit message footer. Currently, the API exposes only the main author and committer, but not co-authors.\n\n```java\n var userEmail = commit.getAuthor().getEmail();\n var commiterEmail = commit.getCommitter().getEmail();\n // How to get the co-author with this API? \n```\n\n**Proposed Solution:** \n- Add a method to `GHCommit` (or similar) that returns a list of co-authors parsed from the commit message.\n- Optionally, provide a structured representation (e.g., name and email) for each co-author.\n\n**Example API:**\n```java\nList getCoAuthors();\n```\n\n\n**References:** \n\nhttps://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors#creating-co-authored-commits-on-the-command-line\n\n**Note to maintainers:** \n\nApologies if this is currently possible, please share any snippet if you can. Thank you in advance! ", + "body": "GitHub now has a new event of \"dynamic\" on workflow runs. I can't find any published docs, but looking at the data it appears to be dynamic runs of workflows for things like Dependabot, etc. The results is when `GHWorkflowRun` maps `event` field in `getEvent()` method to the `GHEvent` enum it ends up being UNKNOWN and logs a warning in the `EnumUtils` class that the value is unknown. DYNAMIC should be added to the GHEvent enum to minimize log warnings and add clarity for known (even if not published) possible values.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2181/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2150/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -90,53 +71,53 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2150/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2166", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2144", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/events", - "html_url": "https://github.com/hub4j/github-api/issues/2166", - "id": 3668649747, - "node_id": "I_kwDOAAlq-s7aqycT", - "number": 2166, - "title": "Compatibility issue with Jackson 2.20 and above", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2144/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2144/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2144/events", + "html_url": "https://github.com/hub4j/github-api/issues/2144", + "id": 3450064053, + "node_id": "I_kwDOAAlq-s7No8y1", + "number": 2144, + "title": "Unbridged Artifact for 1.330", "user": { - "login": "yeikel", - "id": 8935151, - "node_id": "MDQ6VXNlcjg5MzUxNTE=", - "avatar_url": "https://avatars.githubusercontent.com/u/8935151?v=4", + "login": "gilday", + "id": 1431609, + "node_id": "MDQ6VXNlcjE0MzE2MDk=", + "avatar_url": "https://avatars.githubusercontent.com/u/1431609?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/yeikel", - "html_url": "https://github.com/yeikel", - "followers_url": "https://api.github.com/users/yeikel/followers", - "following_url": "https://api.github.com/users/yeikel/following{/other_user}", - "gists_url": "https://api.github.com/users/yeikel/gists{/gist_id}", - "starred_url": "https://api.github.com/users/yeikel/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/yeikel/subscriptions", - "organizations_url": "https://api.github.com/users/yeikel/orgs", - "repos_url": "https://api.github.com/users/yeikel/repos", - "events_url": "https://api.github.com/users/yeikel/events{/privacy}", - "received_events_url": "https://api.github.com/users/yeikel/received_events", + "url": "https://api.github.com/users/gilday", + "html_url": "https://github.com/gilday", + "followers_url": "https://api.github.com/users/gilday/followers", + "following_url": "https://api.github.com/users/gilday/following{/other_user}", + "gists_url": "https://api.github.com/users/gilday/gists{/gist_id}", + "starred_url": "https://api.github.com/users/gilday/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/gilday/subscriptions", + "organizations_url": "https://api.github.com/users/gilday/orgs", + "repos_url": "https://api.github.com/users/gilday/repos", + "events_url": "https://api.github.com/users/gilday/events{/privacy}", + "received_events_url": "https://api.github.com/users/gilday/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 3, - "created_at": "2025-11-26T18:38:53Z", - "updated_at": "2026-01-15T04:18:43Z", - "closed_at": null, + "comments": 1, + "created_at": "2025-09-24T16:05:57Z", + "updated_at": "2025-10-23T17:46:14Z", + "closed_at": "2025-10-23T17:46:14Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, @@ -151,11 +132,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Describe the bug**\n\nI am trying to use the project along with Jackson 2.20.1 but it fails at runtime with the following issue while creating the mapper \n\n```\nException in thread \"main\" java.lang.NoSuchFieldError: Class com.fasterxml.jackson.databind.PropertyNamingStrategy does not have member field 'com.fasterxml.jackson.databind.PropertyNamingStrategy SNAKE_CASE'\n\tat org.kohsuke.github.GitHubClient.(GitHubClient.java:98)\n```\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Configure a project and add Jackson 2.20.1 to the classpath\n2. Try to create a new client\n\n\n**Expected behavior**\n\nThe client is created \n\n**Actual behavior**\n\nIt fails because it cannot find `PropertyNamingStrategy SNAKE_CASE` which no longer exists\n\n**Desktop (please complete the following information):**\n\n - Version: 2.0-rc.5\n\n**Additional context**\n\nUsage: https://github.com/hub4j/github-api/blob/9e09d67fbb35808abc0782e7d0cbf4b6e64a94de/src/main/java/org/kohsuke/github/GitHubClient.java#L124\n\nThis feature was dropped in Jackson 2.20. Using Jackson 2.19.4 works for now but it is not a long term solution\n\nSee https://github.com/FasterXML/jackson-databind/commit/4d2083160fef06e6063a3082f0fdaab8c2803793\n", + "body": "Could you please release the `github-api-unbridged` artifact for version 1.330? This would allow projects using Mockito in their test suites to upgrade to the Jackson-compatible version while maintaining test functionality.\n\n## Current Situation\n- ✅ github-api:1.330 (bridged) - Released and available\n- ❌ github-api-unbridged:1.330 - Not yet released\n- 🔧 Tests fail with the bridged version due to Mockito incompatibilities\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2166/reactions", - "total_count": 3, - "+1": 3, + "url": "https://api.github.com/repos/hub4j/github-api/issues/2144/reactions", + "total_count": 0, + "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, @@ -164,81 +145,53 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2144/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2172", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2140", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/events", - "html_url": "https://github.com/hub4j/github-api/issues/2172", - "id": 3695344435, - "node_id": "I_kwDOAAlq-s7cQnsz", - "number": 2172, - "title": "GitHubSanityCachedValue can block whole application", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2140/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2140/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2140/events", + "html_url": "https://github.com/hub4j/github-api/issues/2140", + "id": 3379331716, + "node_id": "I_kwDOAAlq-s7JbIKE", + "number": 2140, + "title": "NoClassDefFoundError when using Jackson 2.20", "user": { - "login": "alexec", - "id": 1142830, - "node_id": "MDQ6VXNlcjExNDI4MzA=", - "avatar_url": "https://avatars.githubusercontent.com/u/1142830?v=4", + "login": "sfc-gh-pvillard", + "id": 189795559, + "node_id": "U_kgDOC1AM5w", + "avatar_url": "https://avatars.githubusercontent.com/u/189795559?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/alexec", - "html_url": "https://github.com/alexec", - "followers_url": "https://api.github.com/users/alexec/followers", - "following_url": "https://api.github.com/users/alexec/following{/other_user}", - "gists_url": "https://api.github.com/users/alexec/gists{/gist_id}", - "starred_url": "https://api.github.com/users/alexec/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/alexec/subscriptions", - "organizations_url": "https://api.github.com/users/alexec/orgs", - "repos_url": "https://api.github.com/users/alexec/repos", - "events_url": "https://api.github.com/users/alexec/events{/privacy}", - "received_events_url": "https://api.github.com/users/alexec/received_events", + "url": "https://api.github.com/users/sfc-gh-pvillard", + "html_url": "https://github.com/sfc-gh-pvillard", + "followers_url": "https://api.github.com/users/sfc-gh-pvillard/followers", + "following_url": "https://api.github.com/users/sfc-gh-pvillard/following{/other_user}", + "gists_url": "https://api.github.com/users/sfc-gh-pvillard/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sfc-gh-pvillard/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sfc-gh-pvillard/subscriptions", + "organizations_url": "https://api.github.com/users/sfc-gh-pvillard/orgs", + "repos_url": "https://api.github.com/users/sfc-gh-pvillard/repos", + "events_url": "https://api.github.com/users/sfc-gh-pvillard/events{/privacy}", + "received_events_url": "https://api.github.com/users/sfc-gh-pvillard/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 2, - "created_at": "2025-12-04T16:12:07Z", - "updated_at": "2025-12-16T15:38:13Z", - "closed_at": null, + "comments": 3, + "created_at": "2025-09-03T10:45:15Z", + "updated_at": "2025-09-04T17:48:24Z", + "closed_at": "2025-09-03T13:08:25Z", "author_association": "NONE", "type": null, "active_lock_reason": null, @@ -253,9 +206,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "\nThe `GitHubSanityCachedValue` class contains a single shared lock. This means that client to this class can be blocked by another user of the function. \n\nInstead, it might be better to use a read/write lock.\n\n\nhttps://github.com/hub4j/github-api/blob/9e09d67fbb35808abc0782e7d0cbf4b6e64a94de/src/main/java/org/kohsuke/github/GitHubSanityCachedValue.java#L11 ", + "body": "````java\njava.lang.NoClassDefFoundError: Could not initialize class org.kohsuke.github.GitHubClient\n at org.kohsuke.github.GitHub.(GitHub.java:137)\n at org.kohsuke.github.GitHubBuilder.build(GitHubBuilder.java:509)\n at ...\nCaused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoSuchFieldError: Class com.fasterxml.jackson.databind.PropertyNamingStrategy does not have member field 'com.fasterxml.jackson.databind.PropertyNamingStrategy SNAKE_CASE' [in thread \"ForkJoinPool-1-worker-2\"]\n at org.kohsuke.github.GitHubClient.(GitHubClient.java:92)\n ... 15 common frames omitted\n````\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2172/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2140/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -266,72 +219,63 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2140/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2010", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2137", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/events", - "html_url": "https://github.com/hub4j/github-api/issues/2010", - "id": 2792856326, - "node_id": "I_kwDOAAlq-s6md5sG", - "number": 2010, - "title": "Support new issue types", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2137/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2137/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2137/events", + "html_url": "https://github.com/hub4j/github-api/issues/2137", + "id": 3373441552, + "node_id": "I_kwDOAAlq-s7JEqIQ", + "number": 2137, + "title": "Runtime errors when using jackson 2.20.0", "user": { - "login": "Haarolean", - "id": 1494347, - "node_id": "MDQ6VXNlcjE0OTQzNDc=", - "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "login": "ketan", + "id": 10598, + "node_id": "MDQ6VXNlcjEwNTk4", + "avatar_url": "https://avatars.githubusercontent.com/u/10598?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/Haarolean", - "html_url": "https://github.com/Haarolean", - "followers_url": "https://api.github.com/users/Haarolean/followers", - "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", - "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", - "organizations_url": "https://api.github.com/users/Haarolean/orgs", - "repos_url": "https://api.github.com/users/Haarolean/repos", - "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", - "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "url": "https://api.github.com/users/ketan", + "html_url": "https://github.com/ketan", + "followers_url": "https://api.github.com/users/ketan/followers", + "following_url": "https://api.github.com/users/ketan/following{/other_user}", + "gists_url": "https://api.github.com/users/ketan/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ketan/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ketan/subscriptions", + "organizations_url": "https://api.github.com/users/ketan/orgs", + "repos_url": "https://api.github.com/users/ketan/repos", + "events_url": "https://api.github.com/users/ketan/events{/privacy}", + "received_events_url": "https://api.github.com/users/ketan/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 3, - "created_at": "2025-01-16T13:57:43Z", - "updated_at": "2025-11-12T23:19:16Z", - "closed_at": null, + "comments": 0, + "created_at": "2025-09-01T17:51:50Z", + "updated_at": "2025-09-02T19:22:33Z", + "closed_at": "2025-09-02T19:22:33Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, @@ -346,11 +290,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "Github introduced new enhancements to issues: issue types, sub-issues, and other minor issues. It seems like they're forcing these issue types by default now, the field is visible even if you don't want to use it, my guess is it will be a default soon.\nSo it makes sense to implement this kind of API.\n\nhttps://github.blog/changelog/2025-01-13-evolving-github-issues-public-preview/\nWhile it's stated that it's in \"preview\", they've already started rolling it out actively without opting in.", + "body": "**Environment**\n\n* Jackson databind - `2.20.0`\n* org.kohsuke:github-api `1.329`\n\nWhen running with this combination, there's a runtime error when loading GitHubClient. In particular, `PropertyNamingStrategy.SNAKE_CASE` seems to have been removed in jackson databind `2.20.0` as part of https://github.com/FasterXML/jackson-databind/commit/4d2083160fef06e6063a3082f0fdaab8c2803793. https://github.com/FasterXML/jackson-databind/issues/4136 contains the discussion around it.\n\nThe suggestion is to use `PropertyNamingStrategies#SNAKE_CASE` instead.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2010/reactions", - "total_count": 1, - "+1": 1, + "url": "https://api.github.com/repos/hub4j/github-api/issues/2137/reactions", + "total_count": 0, + "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, @@ -359,72 +303,53 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2137/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2156", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2128", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/events", - "html_url": "https://github.com/hub4j/github-api/issues/2156", - "id": 3574234743, - "node_id": "I_kwDOAAlq-s7VCn53", - "number": 2156, - "title": "Enterprise installations not recognized (throws an Exception)", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2128/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2128/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2128/events", + "html_url": "https://github.com/hub4j/github-api/issues/2128", + "id": 3364033362, + "node_id": "I_kwDOAAlq-s7IgxNS", + "number": 2128, + "title": "GHRepository#getIssues() takes 30s", "user": { - "login": "boriel", - "id": 1433137, - "node_id": "MDQ6VXNlcjE0MzMxMzc=", - "avatar_url": "https://avatars.githubusercontent.com/u/1433137?v=4", + "login": "Alathreon", + "id": 45936420, + "node_id": "MDQ6VXNlcjQ1OTM2NDIw", + "avatar_url": "https://avatars.githubusercontent.com/u/45936420?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/boriel", - "html_url": "https://github.com/boriel", - "followers_url": "https://api.github.com/users/boriel/followers", - "following_url": "https://api.github.com/users/boriel/following{/other_user}", - "gists_url": "https://api.github.com/users/boriel/gists{/gist_id}", - "starred_url": "https://api.github.com/users/boriel/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/boriel/subscriptions", - "organizations_url": "https://api.github.com/users/boriel/orgs", - "repos_url": "https://api.github.com/users/boriel/repos", - "events_url": "https://api.github.com/users/boriel/events{/privacy}", - "received_events_url": "https://api.github.com/users/boriel/received_events", + "url": "https://api.github.com/users/Alathreon", + "html_url": "https://github.com/Alathreon", + "followers_url": "https://api.github.com/users/Alathreon/followers", + "following_url": "https://api.github.com/users/Alathreon/following{/other_user}", + "gists_url": "https://api.github.com/users/Alathreon/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Alathreon/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Alathreon/subscriptions", + "organizations_url": "https://api.github.com/users/Alathreon/orgs", + "repos_url": "https://api.github.com/users/Alathreon/repos", + "events_url": "https://api.github.com/users/Alathreon/events{/privacy}", + "received_events_url": "https://api.github.com/users/Alathreon/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 1, - "created_at": "2025-10-31T10:01:12Z", - "updated_at": "2025-11-12T23:16:45Z", - "closed_at": null, + "created_at": "2025-08-28T16:54:27Z", + "updated_at": "2025-08-30T20:45:46Z", + "closed_at": "2025-08-30T20:45:46Z", "author_association": "NONE", "type": null, "active_lock_reason": null, @@ -439,11 +364,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Description of the bug**\nWhen listing installations for a given App ID, the deserialization of the JSON response fails with the exception:\n```\nhudson.remoting.ProxyException: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `org.kohsuke.github.GHTargetType` from String \"Enterprise\": not one of the values accepted for Enum class: [ORGANIZATION, USER]\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 756] (through reference chain: java.lang.Object[][0]->org.kohsuke.github.GHAppInstallation[\"target_type\"])\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1959)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:1245)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.EnumDeserializer._deserializeAltString(EnumDeserializer.java:447)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.EnumDeserializer._fromString(EnumDeserializer.java:304)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.EnumDeserializer.deserialize(EnumDeserializer.java:273)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:138)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:399)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:218)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2131)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1566)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubResponse.parseBody(GitHubResponse.java:104)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubPageIterator.lambda$fetch$0(GitHubPageIterator.java:147)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubClient.createResponse(GitHubClient.java:679)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:466)\nCaused: hudson.remoting.ProxyException: org.kohsuke.github.HttpException: Server returned HTTP response code: 200, message: 'null' for URL: [https://api.github.com/app/installati](https://api.github.com/app/installations)\n ...\n```\n\n**To Reproduce**\nTo reproduce:\n\n 1. Install a GitHub App at the enterprise level (this is a rather new feature)\n 1. do an api call to\n[https://api.github.com/app/installations](https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#list-installations-for-the-authenticated-app)\n \nThe `target_type` field will be `\"Enterprise\"` in one of the installations returned, and the deserialization will fail.\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\nJust return the deserialized content with this new `target_type`\n\n**Desktop (please complete the following information):**\n Does not apply\n\n**Additional context**\nFixing this will require adding the `ENTERPRISE` type to the `GHTargetType` Enum here:\nhttps://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GHTargetType.java#L17", + "body": "**Describe the bug**\nA clear and concise description of what the bug is.\nI am using the method GHRepository#getIssues() to get all issues for auto complete purpose in a discord bot, but the problem is that there are more than 1000 issues and fetching them all takes 28s...\nIt could be partially patched by allowing the client to set a page size to large numbers, so it doesn't need to do a HTTP call 44 times.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n- Have a repository with 1000+ issues\n- Call getIssues() with no filter\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\nIt should take much less time.\n\n**Desktop (please complete the following information):**\n- Version 1.329\n- Tested in many Windows/Linux distributions\n\n**Additional context**\nAdd any other context about the problem here.\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2156/reactions", - "total_count": 1, - "+1": 1, + "url": "https://api.github.com/repos/hub4j/github-api/issues/2128/reactions", + "total_count": 0, + "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, @@ -452,73 +377,54 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2128/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2155", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2112", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/events", - "html_url": "https://github.com/hub4j/github-api/issues/2155", - "id": 3570367983, - "node_id": "I_kwDOAAlq-s7Uz33v", - "number": 2155, - "title": "[Feature request] Support matching-refs API", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2112/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2112/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2112/events", + "html_url": "https://github.com/hub4j/github-api/issues/2112", + "id": 3218889361, + "node_id": "I_kwDOAAlq-s6_3FqR", + "number": 2112, + "title": "I am using `v2.0-rc.3` and when starting an application I get a load of warnings regarding annotation used in the github-api library.", "user": { - "login": "krzema12", - "id": 3110813, - "node_id": "MDQ6VXNlcjMxMTA4MTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/3110813?v=4", + "login": "HerrDerb", + "id": 7398256, + "node_id": "MDQ6VXNlcjczOTgyNTY=", + "avatar_url": "https://avatars.githubusercontent.com/u/7398256?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/krzema12", - "html_url": "https://github.com/krzema12", - "followers_url": "https://api.github.com/users/krzema12/followers", - "following_url": "https://api.github.com/users/krzema12/following{/other_user}", - "gists_url": "https://api.github.com/users/krzema12/gists{/gist_id}", - "starred_url": "https://api.github.com/users/krzema12/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/krzema12/subscriptions", - "organizations_url": "https://api.github.com/users/krzema12/orgs", - "repos_url": "https://api.github.com/users/krzema12/repos", - "events_url": "https://api.github.com/users/krzema12/events{/privacy}", - "received_events_url": "https://api.github.com/users/krzema12/received_events", + "url": "https://api.github.com/users/HerrDerb", + "html_url": "https://github.com/HerrDerb", + "followers_url": "https://api.github.com/users/HerrDerb/followers", + "following_url": "https://api.github.com/users/HerrDerb/following{/other_user}", + "gists_url": "https://api.github.com/users/HerrDerb/gists{/gist_id}", + "starred_url": "https://api.github.com/users/HerrDerb/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/HerrDerb/subscriptions", + "organizations_url": "https://api.github.com/users/HerrDerb/orgs", + "repos_url": "https://api.github.com/users/HerrDerb/repos", + "events_url": "https://api.github.com/users/HerrDerb/events{/privacy}", + "received_events_url": "https://api.github.com/users/HerrDerb/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 0, - "created_at": "2025-10-30T11:39:29Z", - "updated_at": "2025-11-12T23:12:26Z", - "closed_at": null, - "author_association": "NONE", + "created_at": "2025-07-10T11:04:06Z", + "updated_at": "2025-07-23T23:42:08Z", + "closed_at": "2025-07-23T23:42:08Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -532,9 +438,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "See https://docs.github.com/en/rest/git/refs?apiVersion=2022-11-28#list-matching-references. The endpoint is `/repos/{owner}/{repo}/git/matching-refs/{ref}`.\n\nThe goal of this endpoint is to list refs that match the given prefix. It's useful to avoid fetching all available refs.", + "body": "I am using `v2.0-rc.3` and when starting an application I get a load of warnings regarding annotation used in the github-api library.\n\n```\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GitHub.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings': class file for edu.umd.cs.findbugs.annotations.SuppressFBWarnings not found\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GitHub.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GitHub.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GitHub.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'value()' in type 'WithBridgeMethods': class file for com.infradna.tool.bridge_method_injector.WithBridgeMethods not found\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'adapterMethod()' in type 'WithBridgeMethods'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'WithBridgeMethods'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'adapterMethod()' in type 'WithBridgeMethods'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GitHub.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings': class file for edu.umd.cs.findbugs.annotations.SuppressFBWarnings not found\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GitHub.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\n...\n```\n\nTo avoid this one needs to add `spotbugs-annotations` and `bridge-method-annotation` to each project.\nAdditionally `bridge-method-annotation` is not even hosted on maven central and a third party repository also needs to be added. This is too much overhead just to avoid warnings. Therefor by adding the deps as `runtime` solves this issue for all users of the github library \n\n_Originally posted by @HerrDerb in https://github.com/hub4j/github-api/discussions/2090_", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2155/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2112/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -545,64 +451,54 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2112/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2120", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2111", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/events", - "html_url": "https://github.com/hub4j/github-api/issues/2120", - "id": 3274944747, - "node_id": "I_kwDOAAlq-s7DM7Dr", - "number": 2120, - "title": "Bridged artifact publishing failed for 2.0-rc.4", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2111/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2111/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2111/events", + "html_url": "https://github.com/hub4j/github-api/issues/2111", + "id": 3218887702, + "node_id": "I_kwDOAAlq-s6_3FQW", + "number": 2111, + "title": "Inlcude optional dependencies to avoid warnings", "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "login": "HerrDerb", + "id": 7398256, + "node_id": "MDQ6VXNlcjczOTgyNTY=", + "avatar_url": "https://avatars.githubusercontent.com/u/7398256?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "url": "https://api.github.com/users/HerrDerb", + "html_url": "https://github.com/HerrDerb", + "followers_url": "https://api.github.com/users/HerrDerb/followers", + "following_url": "https://api.github.com/users/HerrDerb/following{/other_user}", + "gists_url": "https://api.github.com/users/HerrDerb/gists{/gist_id}", + "starred_url": "https://api.github.com/users/HerrDerb/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/HerrDerb/subscriptions", + "organizations_url": "https://api.github.com/users/HerrDerb/orgs", + "repos_url": "https://api.github.com/users/HerrDerb/repos", + "events_url": "https://api.github.com/users/HerrDerb/events{/privacy}", + "received_events_url": "https://api.github.com/users/HerrDerb/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 1, - "created_at": "2025-07-29T20:45:38Z", - "updated_at": "2025-10-23T18:21:36Z", - "closed_at": null, - "author_association": "MEMBER", + "created_at": "2025-07-10T11:03:38Z", + "updated_at": "2025-10-23T18:09:10Z", + "closed_at": "2025-10-23T18:09:10Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -616,11 +512,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "https://github.com/hub4j/github-api/actions/runs/16606284210\n\n```\n2025-07-29T20:24:21.7667363Z ##[group]Run mvn -B clean deploy -DskipTests -Prelease -Pbridged\n2025-07-29T20:24:21.7668059Z \u001b[36;1mmvn -B clean deploy -DskipTests -Prelease -Pbridged\u001b[0m\n2025-07-29T20:24:21.7696714Z shell: /usr/bin/bash -e {0}\n2025-07-29T20:24:21.7697147Z env:\n2025-07-29T20:24:21.7698515Z JAVA_11_PLUS_MAVEN_OPTS: --add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED\n2025-07-29T20:24:21.7700071Z JAVA_HOME: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/17.0.16-8/x64\n2025-07-29T20:24:21.7700782Z JAVA_HOME_17_X64: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/17.0.16-8/x64\n2025-07-29T20:24:21.7702295Z MAVEN_OPTS: --add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED\n2025-07-29T20:24:21.7704065Z MAVEN_USERNAME: ***\n2025-07-29T20:24:21.7704550Z MAVEN_PASSWORD: ***\n2025-07-29T20:24:21.7705067Z MAVEN_GPG_PASSPHRASE: ***\n2025-07-29T20:24:21.7705491Z ##[endgroup]\n2025-07-29T20:24:23.0228744Z [INFO] Scanning for projects...\n2025-07-29T20:24:23.9536099Z [WARNING] \n2025-07-29T20:24:23.9537453Z [WARNING] Some problems were encountered while building the effective model for org.kohsuke:github-api-bridged:jar:2.0-rc.4\n2025-07-29T20:24:23.9540996Z [WARNING] 'artifactId' contains an expression but should be a constant. @ org.kohsuke:${github-api.artifactId}:2.0-rc.4, /home/runner/work/github-api/github-api/pom.xml, line 5, column 15\n2025-07-29T20:24:23.9546247Z [WARNING] \n2025-07-29T20:24:23.9547681Z [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.\n2025-07-29T20:24:23.9556489Z [WARNING] \n2025-07-29T20:24:23.9559777Z [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.\n2025-07-29T20:24:23.9560985Z [WARNING] \n2025-07-29T20:24:23.9618771Z [INFO] Inspecting build with total of 1 modules...\n2025-07-29T20:24:23.9621326Z [INFO] Installing Nexus Staging features:\n2025-07-29T20:24:23.9623096Z [INFO] ... total of 1 executions of maven-deploy-plugin replaced with nexus-staging-maven-plugin\n2025-07-29T20:24:23.9709735Z [INFO] \n2025-07-29T20:24:23.9710932Z [INFO] -------------------< org.kohsuke:github-api-bridged >-------------------\n2025-07-29T20:24:23.9731357Z [INFO] Building GitHub API for Java 2.0-rc.4\n2025-07-29T20:24:23.9732242Z [INFO] from pom.xml\n2025-07-29T20:24:23.9733097Z [INFO] --------------------------------[ jar ]---------------------------------\n2025-07-29T20:24:24.1975820Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/com/infradna/tool/bridge-method-injector/1.31/bridge-method-injector-1.31.jar\n2025-07-29T20:24:24.9010193Z [INFO] Downloaded from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/com/infradna/tool/bridge-method-injector/1.31/bridge-method-injector-1.31.jar (20 kB at 29 kB/s)\n2025-07-29T20:24:25.2685425Z [INFO] \n2025-07-29T20:24:25.2688450Z [INFO] --- clean:3.2.0:clean (default-clean) @ github-api-bridged ---\n2025-07-29T20:24:25.3139513Z [INFO] Deleting /home/runner/work/github-api/github-api/target\n2025-07-29T20:24:25.3751804Z [INFO] \n2025-07-29T20:24:25.3755019Z [INFO] --- sortpom:4.0.0:verify (default) @ github-api-bridged ---\n2025-07-29T20:24:25.4004807Z [INFO] Verifying file /home/runner/work/github-api/github-api/pom.xml\n2025-07-29T20:24:25.5574156Z [INFO] \n2025-07-29T20:24:25.5604522Z [INFO] --- resources:3.3.1:copy-resources (copy-bridged-resources) @ github-api-bridged ---\n2025-07-29T20:24:25.6211373Z [INFO] Copying 2 resources from src/main/resources/META-INF/native-image/org.kohsuke/github-api to target/classes/META-INF/native-image/org.kohsuke/github-api-bridged\n2025-07-29T20:24:25.6257379Z [INFO] \n2025-07-29T20:24:25.6260843Z [INFO] --- resources:3.3.1:resources (default-resources) @ github-api-bridged ---\n2025-07-29T20:24:25.6298334Z [INFO] Copying 2 resources from src/main/resources to target/classes\n2025-07-29T20:24:25.6313090Z [INFO] \n2025-07-29T20:24:25.6316388Z [INFO] --- compiler:3.14.0:compile (default-compile) @ github-api-bridged ---\n2025-07-29T20:24:25.7492402Z [INFO] Recompiling the module because of changed source code.\n2025-07-29T20:24:25.7577343Z [INFO] Compiling 248 source files with javac [debug release 11] to target/classes\n2025-07-29T20:24:29.2601532Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/GitHubRequest.java: Some input files use or override a deprecated API.\n2025-07-29T20:24:29.2605584Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/GitHubRequest.java: Recompile with -Xlint:deprecation for details.\n2025-07-29T20:24:29.2645024Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/AbstractBuilder.java: Some input files use unchecked or unsafe operations.\n2025-07-29T20:24:29.2647447Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/AbstractBuilder.java: Recompile with -Xlint:unchecked for details.\n2025-07-29T20:24:29.2649001Z [INFO] \n2025-07-29T20:24:29.2649896Z [INFO] --- bridge-method-injector:1.31:process (default) @ github-api-bridged ---\n2025-07-29T20:24:29.2652007Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm/9.8/asm-9.8.pom\n2025-07-29T20:24:29.2949999Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.pom\n2025-07-29T20:24:29.3649367Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.pom (2.4 kB at 34 kB/s)\n2025-07-29T20:24:29.3683200Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.pom\n2025-07-29T20:24:29.3975186Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.pom\n2025-07-29T20:24:29.4137372Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.pom (2.8 kB at 186 kB/s)\n2025-07-29T20:24:29.4162498Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.pom\n2025-07-29T20:24:29.4335247Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.pom\n2025-07-29T20:24:29.4487718Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.pom (2.6 kB at 173 kB/s)\n2025-07-29T20:24:29.4537743Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm/9.8/asm-9.8.jar\n2025-07-29T20:24:29.4724836Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.jar\n2025-07-29T20:24:29.4726869Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.jar\n2025-07-29T20:24:29.5200408Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.jar\n2025-07-29T20:24:29.5581033Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.jar (126 kB at 3.3 MB/s)\n2025-07-29T20:24:29.5604951Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.jar\n2025-07-29T20:24:29.5607222Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.jar\n2025-07-29T20:24:29.5810217Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.jar (73 kB at 3.3 MB/s)\n2025-07-29T20:24:29.6160423Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.jar (52 kB at 911 kB/s)\n2025-07-29T20:24:29.7000553Z [INFO] \n2025-07-29T20:24:29.7004734Z [INFO] --- resources:3.3.1:testResources (default-testResources) @ github-api-bridged ---\n2025-07-29T20:24:29.8214547Z [INFO] Copying 80 resources from src/test/resources to target/test-classes\n2025-07-29T20:24:29.8321255Z [INFO] \n2025-07-29T20:24:29.8322203Z [INFO] --- compiler:3.14.0:testCompile (default-testCompile) @ github-api-bridged ---\n2025-07-29T20:24:29.8448238Z [INFO] Recompiling the module because of changed dependency.\n2025-07-29T20:24:29.8464047Z [INFO] Compiling 89 source files with javac [debug release 11] to target/test-classes\n2025-07-29T20:24:33.5592285Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/AbstractGHAppInstallationTest.java: Some input files use or override a deprecated API.\n2025-07-29T20:24:33.5595228Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/AbstractGHAppInstallationTest.java: Recompile with -Xlint:deprecation for details.\n2025-07-29T20:24:33.5597814Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/GitHubWireMockRule.java: Some input files use unchecked or unsafe operations.\n2025-07-29T20:24:33.5600435Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/GitHubWireMockRule.java: Recompile with -Xlint:unchecked for details.\n2025-07-29T20:24:33.5602352Z [INFO] \n2025-07-29T20:24:33.5605120Z [INFO] --- spring-boot:3.3.5:process-test-aot (process-test-aot) @ github-api-bridged ---\n2025-07-29T20:24:33.6745177Z [INFO] Skipping AOT test processing since tests are skipped\n2025-07-29T20:24:33.6751073Z [INFO] \n2025-07-29T20:24:33.6751944Z [INFO] --- surefire:3.5.3:test (default-test) @ github-api-bridged ---\n2025-07-29T20:24:33.7535969Z [INFO] Tests are skipped.\n2025-07-29T20:24:33.7536776Z [INFO] \n2025-07-29T20:24:33.7537563Z [INFO] --- jar:3.4.2:jar (default-jar) @ github-api-bridged ---\n2025-07-29T20:24:33.9589304Z [INFO] Building jar: /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:24:34.0705411Z [INFO] \n2025-07-29T20:24:34.0706287Z [INFO] --- javadoc:3.11.2:jar (attach-javadocs) @ github-api-bridged ---\n2025-07-29T20:24:34.5637285Z [INFO] No previous run data found, generating javadoc.\n2025-07-29T20:24:40.3755359Z [INFO] Building jar: /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:24:40.5876374Z [INFO] \n2025-07-29T20:24:40.5881032Z [INFO] --- source:3.3.1:jar-no-fork (attach-sources) @ github-api-bridged ---\n2025-07-29T20:24:40.7511753Z [INFO] Building jar: /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:24:40.8140859Z [INFO] \n2025-07-29T20:24:40.8142525Z [INFO] --- jacoco:0.8.12:prepare-agent-integration (default) @ github-api-bridged ---\n2025-07-29T20:24:40.8461770Z [INFO] jacoco.surefire.argLine set to -javaagent:/home/runner/.m2/repository/org/jacoco/org.jacoco.agent/0.8.12/org.jacoco.agent-0.8.12-runtime.jar=destfile=/home/runner/work/github-api/github-api/target/jacoco-it.exec,excludes=/org/kohsuke/github/example/*\n2025-07-29T20:24:40.8494367Z [INFO] \n2025-07-29T20:24:40.8495616Z [INFO] --- surefire:3.5.3:test (okhttp-test) @ github-api-bridged ---\n2025-07-29T20:24:40.8496881Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8497800Z [INFO] \n2025-07-29T20:24:40.8498984Z [INFO] --- surefire:3.5.3:test (httpclient-test-tracing) @ github-api-bridged ---\n2025-07-29T20:24:40.8524871Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8534351Z [INFO] \n2025-07-29T20:24:40.8535275Z [INFO] --- surefire:3.5.3:test (slow-or-flaky-test) @ github-api-bridged ---\n2025-07-29T20:24:40.8550533Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8557437Z [INFO] \n2025-07-29T20:24:40.8558398Z [INFO] --- surefire:3.5.3:test (slow-or-flaky-test-tracing) @ github-api-bridged ---\n2025-07-29T20:24:40.8572406Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8575439Z [INFO] \n2025-07-29T20:24:40.8576894Z [INFO] --- surefire:3.5.3:test (jwt0.11.x-test) @ github-api-bridged ---\n2025-07-29T20:24:40.8602410Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8608154Z [INFO] \n2025-07-29T20:24:40.8609090Z [INFO] --- spotless:2.44.5:check (spotless-check) @ github-api-bridged ---\n2025-07-29T20:24:41.2263304Z [INFO] Index file does not exist. Fallback to an empty index\n2025-07-29T20:24:46.6711821Z [INFO] Spotless.Java is keeping 337 files clean - 0 needs changes to be clean, 337 were already clean, 0 were skipped because caching determined they were already clean\n2025-07-29T20:24:46.6755549Z [INFO] \n2025-07-29T20:24:46.6756409Z [INFO] --- japicmp:0.23.1:cmp (default) @ github-api-bridged ---\n2025-07-29T20:24:46.8656192Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:24:46.8659827Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:24:46.8805000Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/maven-metadata.xml (379 B at 24 kB/s)\n2025-07-29T20:24:46.8950664Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/kohsuke/github-api-bridged/2.0-rc.3/github-api-bridged-2.0-rc.3.jar\n2025-07-29T20:24:46.9134198Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/2.0-rc.3/github-api-bridged-2.0-rc.3.jar\n2025-07-29T20:24:46.9714434Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/2.0-rc.3/github-api-bridged-2.0-rc.3.jar (653 kB at 11 MB/s)\n2025-07-29T20:24:47.4514453Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.diff'.\n2025-07-29T20:24:47.4782383Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.md'.\n2025-07-29T20:24:47.7245716Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.xml'.\n2025-07-29T20:24:47.7299099Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.html'.\n2025-07-29T20:24:47.7317925Z [INFO] \n2025-07-29T20:24:47.7318868Z [INFO] >>> spotbugs:4.9.3.0:check (run-spotbugs) > :spotbugs @ github-api-bridged >>>\n2025-07-29T20:24:47.7507293Z [INFO] \n2025-07-29T20:24:47.7508252Z [INFO] --- spotbugs:4.9.3.0:spotbugs (spotbugs) @ github-api-bridged ---\n2025-07-29T20:24:48.6436935Z [INFO] Fork Value is true\n2025-07-29T20:25:00.2299299Z [INFO] Done SpotBugs Analysis....\n2025-07-29T20:25:00.9449363Z [WARNING] Site model of 'org.kohsuke:github-api-bridged:jar:2.0-rc.4' for default locale is still using the old pre-version 2.0.0 model. You MUST migrate to the new model as soon as possible otherwise your build will break in the future!\n2025-07-29T20:25:00.9658654Z [INFO] Rendering content with org.kohsuke:maven-skin:jar:1.2 skin\n2025-07-29T20:25:01.4360715Z [INFO] \n2025-07-29T20:25:01.4361760Z [INFO] <<< spotbugs:4.9.3.0:check (run-spotbugs) < :spotbugs @ github-api-bridged <<<\n2025-07-29T20:25:01.4362774Z [INFO] \n2025-07-29T20:25:01.4363601Z [INFO] \n2025-07-29T20:25:01.4364417Z [INFO] --- spotbugs:4.9.3.0:check (run-spotbugs) @ github-api-bridged ---\n2025-07-29T20:25:01.4877054Z [INFO] BugInstance size is 0\n2025-07-29T20:25:01.4879822Z [INFO] Error size is 0\n2025-07-29T20:25:01.4886452Z [INFO] No errors/warnings found\n2025-07-29T20:25:01.4887183Z [INFO] \n2025-07-29T20:25:01.4887983Z [INFO] --- gpg:3.2.7:sign (sign-artifacts) @ github-api-bridged ---\n2025-07-29T20:25:01.5676590Z [INFO] Signer 'gpg' is signing 4 files with key default\n2025-07-29T20:25:02.5969472Z [INFO] \n2025-07-29T20:25:02.5970416Z [INFO] --- jacoco:0.8.12:report-integration (report) @ github-api-bridged ---\n2025-07-29T20:25:02.5998704Z [INFO] Skipping JaCoCo execution due to missing execution data file.\n2025-07-29T20:25:02.6000035Z [INFO] \n2025-07-29T20:25:02.6001071Z [INFO] --- jacoco:0.8.12:check (check) @ github-api-bridged ---\n2025-07-29T20:25:02.6069572Z [INFO] Skipping JaCoCo execution due to missing execution data file:/home/runner/work/github-api/github-api/target/jacoco-it.exec\n2025-07-29T20:25:02.6076175Z [INFO] \n2025-07-29T20:25:02.6077039Z [INFO] --- install:3.1.2:install (default-install) @ github-api-bridged ---\n2025-07-29T20:25:02.6323580Z [INFO] Installing /home/runner/work/github-api/github-api/pom.xml to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom\n2025-07-29T20:25:02.6332255Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:25:02.6355514Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:25:02.6376191Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:25:02.6386456Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc\n2025-07-29T20:25:02.6396073Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.pom.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc\n2025-07-29T20:25:02.6399252Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc\n2025-07-29T20:25:02.6402537Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc\n2025-07-29T20:25:02.6437367Z [INFO] \n2025-07-29T20:25:02.6438347Z [INFO] --- nexus-staging:1.7.0:deploy (injected-nexus-deploy) @ github-api-bridged ---\n2025-07-29T20:25:02.6570971Z [INFO] Performing local staging (local stagingDirectory=\"/home/runner/work/github-api/github-api/target/nexus-staging/staging\")...\n2025-07-29T20:25:02.6591567Z [INFO] + Using server credentials \"sonatype-nexus-staging\" from Maven settings.\n2025-07-29T20:25:03.4301873Z [INFO] * Connected to Nexus at https://ossrh-staging-api.central.sonatype.com:443/, is version 2.15.1-02 and edition \"Professional\"\n2025-07-29T20:25:03.6756020Z [INFO] * Using staging profile ID \"org.kohsuke\" (matched by Nexus).\n2025-07-29T20:25:03.6791917Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:25:03.6803873Z [INFO] Installing /home/runner/work/github-api/github-api/pom.xml to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom\n2025-07-29T20:25:03.6829619Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:25:03.6863148Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:25:03.6878197Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc\n2025-07-29T20:25:03.6892786Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.pom.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc\n2025-07-29T20:25:03.6906107Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc\n2025-07-29T20:25:03.6913739Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc\n2025-07-29T20:25:03.6922958Z [INFO] Performing remote staging...\n2025-07-29T20:25:03.6924739Z [INFO] \n2025-07-29T20:25:03.6926171Z [INFO] * Remote staging into staging profile ID \"org.kohsuke\"\n2025-07-29T20:25:04.0610456Z [INFO] * Created staging repository with ID \"org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17\".\n2025-07-29T20:25:04.0612663Z [INFO] * Staging repository at https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17\n2025-07-29T20:25:04.0614508Z [INFO] * Uploading locally staged artifacts to profile org.kohsuke\n2025-07-29T20:25:04.0659242Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc\n2025-07-29T20:25:04.6077033Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc (488 B at 900 B/s)\n2025-07-29T20:25:04.6081763Z [INFO] Downloading from sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:25:04.7329231Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:25:05.3348018Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/maven-metadata.xml (315 B at 523 B/s)\n2025-07-29T20:25:05.3364339Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc\n2025-07-29T20:25:05.6253859Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc (488 B at 1.7 kB/s)\n2025-07-29T20:25:05.6261209Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc\n2025-07-29T20:25:05.8646568Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc (488 B at 2.0 kB/s)\n2025-07-29T20:25:05.8654406Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:25:07.2160449Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar (2.4 MB at 1.8 MB/s)\n2025-07-29T20:25:07.2169227Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:25:08.0248105Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar (653 kB at 808 kB/s)\n2025-07-29T20:25:08.0251530Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom\n2025-07-29T20:25:08.7545703Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom (36 kB at 50 kB/s)\n2025-07-29T20:25:08.7558010Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:25:09.4824315Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar (381 kB at 524 kB/s)\n2025-07-29T20:25:09.4830753Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc\n2025-07-29T20:25:09.7329585Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc (488 B at 2.0 kB/s)\n2025-07-29T20:25:09.7332314Z [INFO] * Upload of locally staged artifacts finished.\n2025-07-29T20:25:09.7333893Z [INFO] * Closing staging repository with ID \"org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17\".\n2025-07-29T20:25:21.0027055Z [ERROR] Remote staging finished with a failure: 400 - Bad Request\n2025-07-29T20:25:21.0033011Z [INFO] ------------------------------------------------------------------------\n2025-07-29T20:25:21.0034141Z [INFO] BUILD FAILURE\n2025-07-29T20:25:21.0035177Z [INFO] ------------------------------------------------------------------------\n2025-07-29T20:25:21.0036666Z [INFO] Total time: 58.002 s\n2025-07-29T20:25:21.0037305Z [INFO] Finished at: 2025-07-29T20:25:21Z\n2025-07-29T20:25:21.0038257Z [INFO] ------------------------------------------------------------------------\n2025-07-29T20:25:21.0042398Z [ERROR] Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.7.0:deploy (injected-nexus-deploy) on project github-api-bridged: Remote staging failed: 400 - Bad Request -> [Help 1]\n2025-07-29T20:25:21.0044028Z [ERROR] \n2025-07-29T20:25:21.0044784Z [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.\n2025-07-29T20:25:21.0045816Z [ERROR] Re-run Maven using the -X switch to enable full debug logging.\n2025-07-29T20:25:21.0046617Z [ERROR] \n2025-07-29T20:25:21.0047546Z [ERROR] For more information about the errors and possible solutions, please read the following articles:\n2025-07-29T20:25:21.0048439Z [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException\n2025-07-29T20:25:21.0544587Z ##[error]Process completed with exit code 1.\n2025-07-29T20:25:21.0652621Z Post job cleanup.\n2025-07-29T20:25:21.2338798Z Removing private key from keychain\n2025-07-29T20:25:21.2639433Z Post job cleanup.\n2025-07-29T20:25:21.3579766Z [command]/usr/bin/git version\n2025-07-29T20:25:21.3623859Z git version 2.50.1\n2025-07-29T20:25:21.3669780Z Temporarily overriding HOME='/home/runner/work/_temp/f63c6d9c-0210-4993-9eab-7c153795d64a' before making global git config changes\n2025-07-29T20:25:21.3671649Z Adding repository directory to the temporary git global config as a safe directory\n2025-07-29T20:25:21.3685669Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/github-api/github-api\n2025-07-29T20:25:21.3725232Z [command]/usr/bin/git config --local --name-only --get-regexp core\\.sshCommand\n2025-07-29T20:25:21.3760717Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'core\\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :\"\n2025-07-29T20:25:21.4023643Z [command]/usr/bin/git config --local --name-only --get-regexp http\\.https\\:\\/\\/github\\.com\\/\\.extraheader\n2025-07-29T20:25:21.4049117Z http.https://github.com/.extraheader\n2025-07-29T20:25:21.4062530Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader\n2025-07-29T20:25:21.4096473Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'http\\.https\\:\\/\\/github\\.com\\/\\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :\"\n2025-07-29T20:25:21.4481669Z Cleaning up orphan processes\n```", + "body": "I am using `v2.0-rc.3` and when starting an application I get a load of warnings regarding annotation used in the github-api library.\r\n\r\n```\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'value()' in type 'WithBridgeMethods': class file for com.infradna.tool.bridge_method_injector.WithBridgeMethods not found\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'adapterMethod()' in type 'WithBridgeMethods'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings': class file for edu.umd.cs.findbugs.annotations.SuppressFBWarnings not found\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'WithBridgeMethods'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'adapterMethod()' in type 'WithBridgeMethods'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\r\n...\r\n```\r\nTo avoid this warnings, one needs to add the required dependencies \r\n```\r\n- com.infradna.tool:bridge-method-annotation\r\n- com.github.spotbugs:spotbugs-annotations\r\n```\r\nto each project. Additionally the `bridge-method-annotation` dependency doesn't even exist on maven central and a thirdparty repo needs to be added to the project which is a massive overhead to only avoid warnings.\r\n\r\nBy adding the dependencies as `runtime` this solves the problem for all users of this library\r\n_Originally posted by @HerrDerb in https://github.com/hub4j/github-api/discussions/2090_", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2120/reactions", - "total_count": 1, - "+1": 1, + "url": "https://api.github.com/repos/hub4j/github-api/issues/2111/reactions", + "total_count": 0, + "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, @@ -629,39 +525,39 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2111/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2145", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2073", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/events", - "html_url": "https://github.com/hub4j/github-api/issues/2145", - "id": 3451557731, - "node_id": "I_kwDOAAlq-s7Nupdj", - "number": 2145, - "title": "How to extract the dependencies of a repository?", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2073/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2073/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2073/events", + "html_url": "https://github.com/hub4j/github-api/issues/2073", + "id": 2950997416, + "node_id": "I_kwDOAAlq-s6v5KWo", + "number": 2073, + "title": "Replace methods which return `Date` with `Instant` or `ZonedDateTime` for 2.x", "user": { - "login": "tohidemyname", - "id": 42423544, - "node_id": "MDQ6VXNlcjQyNDIzNTQ0", - "avatar_url": "https://avatars.githubusercontent.com/u/42423544?v=4", + "login": "solonovamax", + "id": 46940694, + "node_id": "MDQ6VXNlcjQ2OTQwNjk0", + "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/tohidemyname", - "html_url": "https://github.com/tohidemyname", - "followers_url": "https://api.github.com/users/tohidemyname/followers", - "following_url": "https://api.github.com/users/tohidemyname/following{/other_user}", - "gists_url": "https://api.github.com/users/tohidemyname/gists{/gist_id}", - "starred_url": "https://api.github.com/users/tohidemyname/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/tohidemyname/subscriptions", - "organizations_url": "https://api.github.com/users/tohidemyname/orgs", - "repos_url": "https://api.github.com/users/tohidemyname/repos", - "events_url": "https://api.github.com/users/tohidemyname/events{/privacy}", - "received_events_url": "https://api.github.com/users/tohidemyname/received_events", + "url": "https://api.github.com/users/solonovamax", + "html_url": "https://github.com/solonovamax", + "followers_url": "https://api.github.com/users/solonovamax/followers", + "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", + "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", + "organizations_url": "https://api.github.com/users/solonovamax/orgs", + "repos_url": "https://api.github.com/users/solonovamax/repos", + "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", + "received_events_url": "https://api.github.com/users/solonovamax/received_events", "type": "User", "user_view_type": "public", "site_admin": false @@ -675,18 +571,27 @@ "color": "0e8a16", "default": true, "description": "" + }, + { + "id": 1780165359, + "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", + "name": "breaking change", + "color": "b60205", + "default": false, + "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 2, - "created_at": "2025-09-25T02:12:02Z", - "updated_at": "2025-10-23T18:12:16Z", - "closed_at": null, - "author_association": "NONE", + "comments": 1, + "created_at": "2025-03-26T23:38:02Z", + "updated_at": "2025-04-11T07:02:09Z", + "closed_at": "2025-04-11T07:02:09Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -700,9 +605,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "I notice that Github has a rest api to retrieve the dependencies of a repository:\n\nhttps://docs.github.com/en/rest/dependency-graph/sboms?apiVersion=2022-11-28#export-a-software-bill-of-materials-sbom-for-a-repository\n\nHowever, I did not find a corresponding API call in github-api. I tried to implement the api by myself:\n\n```\npublic List getDependGraph() throws IOException {\n\t\tDependence[] list = root().createRequest()\n\t .withUrlPath(getApiTailUrl(\"dependency-graph/sbom\"))\n\t .fetch(Dependence[].class);\n\t return Arrays.asList(list);\n\t\t\n\t}\n```\n\nThe above code returns a 404 error:\n\n```\norg.kohsuke.github.GHFileNotFoundException: https://api.github.com/repos/sgtest/pinned-lucene/stats/dependency-graph/sbom {\n \"message\": \"Not Found\",\n \"documentation_url\": \"https://docs.github.com/rest\",\n \"status\": \"404\"\n}\n```\n\nI tried to call the url:\n`https://api.github.com/repos/sgtest/pinned-lucene/stats/dependency-graph/sbom`\n\nIt also returns a 404 error. \n\nIs this a problem in Github? Would you please give me some suggestions on how to implement the API for github-api?", + "body": "There are multiple methods which return `Date` such as `GHObject#getUpdatedAt()`.\nthe old java `Date` api should really be replaced with one of the following:\n- `Instant` (imo this would be the best pick)\n- `LocalDateTime`\n- `ZonedDateTime`\n\nsince a 2.x version is currently being made, now would be the best time to replace it.\n\nit is recommended to avoid the old date-time api and instead use the newer api. many of the methods on `Date` are even marked as deprecated.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2145/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2073/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -713,39 +618,39 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2073/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2106", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2061", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/events", - "html_url": "https://github.com/hub4j/github-api/issues/2106", - "id": 3128804786, - "node_id": "I_kwDOAAlq-s66fcWy", - "number": 2106, - "title": "GHPullRequestReviewComment.getLine() always returns -1", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/events", + "html_url": "https://github.com/hub4j/github-api/issues/2061", + "id": 2923132207, + "node_id": "I_kwDOAAlq-s6uO3Uv", + "number": 2061, + "title": "`GHIssue#isPullRequest` is false despite being a PR", "user": { - "login": "tsantalis", - "id": 1483516, - "node_id": "MDQ6VXNlcjE0ODM1MTY=", - "avatar_url": "https://avatars.githubusercontent.com/u/1483516?v=4", + "login": "Haarolean", + "id": 1494347, + "node_id": "MDQ6VXNlcjE0OTQzNDc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/tsantalis", - "html_url": "https://github.com/tsantalis", - "followers_url": "https://api.github.com/users/tsantalis/followers", - "following_url": "https://api.github.com/users/tsantalis/following{/other_user}", - "gists_url": "https://api.github.com/users/tsantalis/gists{/gist_id}", - "starred_url": "https://api.github.com/users/tsantalis/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/tsantalis/subscriptions", - "organizations_url": "https://api.github.com/users/tsantalis/orgs", - "repos_url": "https://api.github.com/users/tsantalis/repos", - "events_url": "https://api.github.com/users/tsantalis/events{/privacy}", - "received_events_url": "https://api.github.com/users/tsantalis/received_events", + "url": "https://api.github.com/users/Haarolean", + "html_url": "https://github.com/Haarolean", + "followers_url": "https://api.github.com/users/Haarolean/followers", + "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", + "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", + "organizations_url": "https://api.github.com/users/Haarolean/orgs", + "repos_url": "https://api.github.com/users/Haarolean/repos", + "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", + "received_events_url": "https://api.github.com/users/Haarolean/received_events", "type": "User", "user_view_type": "public", "site_admin": false @@ -759,27 +664,18 @@ "color": "e11d21", "default": true, "description": null - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 0, - "created_at": "2025-06-09T00:16:26Z", - "updated_at": "2025-10-23T18:06:05Z", - "closed_at": null, - "author_association": "NONE", + "created_at": "2025-03-16T15:23:51Z", + "updated_at": "2026-02-10T07:49:35Z", + "closed_at": "2026-02-10T07:49:35Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -793,9 +689,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Describe the bug**\nGHPullRequestReviewComment.getLine() API does not return accurate value.\nAs a matter of fact it always returns -1\n\n**To Reproduce**\nSteps to reproduce the behavior:\nFor the following PR review comment the line is 422\nhttps://api.github.com/repos/JabRef/jabref/pulls/comments/2127829134\n```java\n//PR URL: https://github.com/JabRef/jabref/pull/11845\nGHRepository repository = ...;\nGHPullRequest pullRequest = repository.getPullRequest(11845);\nPagedIterable reviews = pullRequest.listReviews();\n\nfor (GHPullRequestReview review : reviews) {\n PagedIterable comments = review.listReviewComments();\n for (GHPullRequestReviewComment comment : comments) {\n String path = comment.getPath();\n int lineNumber = comment.getLine();\n }\n}\n```\n\n**Expected behavior**\nThe line number for\nhttps://api.github.com/repos/JabRef/jabref/pulls/comments/2127829134\nshould be 422 instead of -1\n\n**Desktop (please complete the following information):**\n - OS: iOS\n - Browser [Firefox]\n - Version [139]\n\n**Additional context**\nAdd any other context about the problem here.\n", + "body": "**Describe the bug**\n`isPullRequest` in GHIssue returns false due to `pull_request == null` condition. The PR object was acquired via `payload.getPullRequest()` method of `GHEventPayload.PullRequest` class.\n\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Get an instance of `GHEventPayload.PullRequest` event\n2. Get the pr entity via `payload.getPullRequest()`\n3. Observe that despite object being an instance of `GHPullRequest` the return value of `isPullRequest` method is false.\n\n**Expected behavior**\nexpected true", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2106/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2061/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -806,72 +702,53 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2126", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2057", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/events", - "html_url": "https://github.com/hub4j/github-api/issues/2126", - "id": 3327323318, - "node_id": "I_kwDOAAlq-s7GUuy2", - "number": 2126, - "title": "Update documentation on pluggable Http Client ", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2057/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2057/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2057/events", + "html_url": "https://github.com/hub4j/github-api/issues/2057", + "id": 2913719792, + "node_id": "I_kwDOAAlq-s6tq9Xw", + "number": 2057, + "title": "Comments seem to be stripped?", "user": { - "login": "ErrorxCode", - "id": 65817230, - "node_id": "MDQ6VXNlcjY1ODE3MjMw", - "avatar_url": "https://avatars.githubusercontent.com/u/65817230?v=4", + "login": "koppor", + "id": 1366654, + "node_id": "MDQ6VXNlcjEzNjY2NTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1366654?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/ErrorxCode", - "html_url": "https://github.com/ErrorxCode", - "followers_url": "https://api.github.com/users/ErrorxCode/followers", - "following_url": "https://api.github.com/users/ErrorxCode/following{/other_user}", - "gists_url": "https://api.github.com/users/ErrorxCode/gists{/gist_id}", - "starred_url": "https://api.github.com/users/ErrorxCode/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/ErrorxCode/subscriptions", - "organizations_url": "https://api.github.com/users/ErrorxCode/orgs", - "repos_url": "https://api.github.com/users/ErrorxCode/repos", - "events_url": "https://api.github.com/users/ErrorxCode/events{/privacy}", - "received_events_url": "https://api.github.com/users/ErrorxCode/received_events", + "url": "https://api.github.com/users/koppor", + "html_url": "https://github.com/koppor", + "followers_url": "https://api.github.com/users/koppor/followers", + "following_url": "https://api.github.com/users/koppor/following{/other_user}", + "gists_url": "https://api.github.com/users/koppor/gists{/gist_id}", + "starred_url": "https://api.github.com/users/koppor/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/koppor/subscriptions", + "organizations_url": "https://api.github.com/users/koppor/orgs", + "repos_url": "https://api.github.com/users/koppor/repos", + "events_url": "https://api.github.com/users/koppor/events{/privacy}", + "received_events_url": "https://api.github.com/users/koppor/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 2070644911, - "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", - "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", - "name": "documentation", - "color": "6ee5cb", - "default": true, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 1, - "created_at": "2025-08-16T14:21:39Z", - "updated_at": "2025-10-23T18:02:32Z", - "closed_at": null, + "created_at": "2025-03-12T11:56:46Z", + "updated_at": "2025-03-12T13:08:56Z", + "closed_at": "2025-03-12T13:08:55Z", "author_association": "NONE", "type": null, "active_lock_reason": null, @@ -886,9 +763,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "The Library uses Java HttpClient, which was removed in Android 7. Using this library on > Android 7 results in the following error:\n\n`NoClassDefFoundError: Failed resolution of: Ljava/net/http/HttpClient;`\n\n\n**To Reproduce**\nRun `GitHub.connectUsingOAuth()` on android (API > 24)\n\n**Expected behaviour**\nNo error, connection established\n\n**Desktop (please complete the following information):**\n - OS: Android\n - Version 16\n\n\nPlease migrate from java **HttpClient** to OkHttp to keep wider support", + "body": "https://github.com/JabRef/jabref/pull/12710#pullrequestreview-2678113413\n\n![Image](https://github.com/user-attachments/assets/1e135941-65b8-410d-ae19-04f40d1786db)\n\nDebug of `comment.getBody();` does not include this text:\n\n![Image](https://github.com/user-attachments/assets/c1530e54-67ab-4520-b269-1a70c1065dd1)\n\norg.kohsuke.github.GHIssueComment#update looks good - is it a GitHub API issue.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2126/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2057/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -899,64 +776,64 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2057/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2009", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2040", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/events", - "html_url": "https://github.com/hub4j/github-api/issues/2009", - "id": 2789691143, - "node_id": "I_kwDOAAlq-s6mR08H", - "number": 2009, - "title": "`GitHubAbuseLimitHandler#isError` fails to detect some secondary rate limit errors", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2040/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2040/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2040/events", + "html_url": "https://github.com/hub4j/github-api/issues/2040", + "id": 2869668624, + "node_id": "I_kwDOAAlq-s6rC6sQ", + "number": 2040, + "title": "Status of 2.x stream", "user": { - "login": "yrodiere", - "id": 412878, - "node_id": "MDQ6VXNlcjQxMjg3OA==", - "avatar_url": "https://avatars.githubusercontent.com/u/412878?v=4", + "login": "nedtwigg", + "id": 2924992, + "node_id": "MDQ6VXNlcjI5MjQ5OTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/2924992?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/yrodiere", - "html_url": "https://github.com/yrodiere", - "followers_url": "https://api.github.com/users/yrodiere/followers", - "following_url": "https://api.github.com/users/yrodiere/following{/other_user}", - "gists_url": "https://api.github.com/users/yrodiere/gists{/gist_id}", - "starred_url": "https://api.github.com/users/yrodiere/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/yrodiere/subscriptions", - "organizations_url": "https://api.github.com/users/yrodiere/orgs", - "repos_url": "https://api.github.com/users/yrodiere/repos", - "events_url": "https://api.github.com/users/yrodiere/events{/privacy}", - "received_events_url": "https://api.github.com/users/yrodiere/received_events", + "url": "https://api.github.com/users/nedtwigg", + "html_url": "https://github.com/nedtwigg", + "followers_url": "https://api.github.com/users/nedtwigg/followers", + "following_url": "https://api.github.com/users/nedtwigg/following{/other_user}", + "gists_url": "https://api.github.com/users/nedtwigg/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nedtwigg/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nedtwigg/subscriptions", + "organizations_url": "https://api.github.com/users/nedtwigg/orgs", + "repos_url": "https://api.github.com/users/nedtwigg/repos", + "events_url": "https://api.github.com/users/nedtwigg/events{/privacy}", + "received_events_url": "https://api.github.com/users/nedtwigg/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 9, - "created_at": "2025-01-15T12:24:43Z", - "updated_at": "2025-09-05T19:31:30Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", + "comments": 6, + "created_at": "2025-02-21T17:51:09Z", + "updated_at": "2025-03-23T06:48:12Z", + "closed_at": "2025-03-23T06:48:12Z", + "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -970,9 +847,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "(Maintainer's note: see also #1975 )\n**Describe the bug**\n\n#1895 attempted to detect more errors related to secondary rate limits, but it seems there are more.\n\nIt appears GitHub APIs -- https://api.github.com/search/issues in particular, maybe more -- can hit a secondary limit and just return a 403 error, with no particular header indicating that a limit was reached. No `Retry-After`, no `gh-limited-by`, nothing. Only the body response explains \"You have exceeded a secondary rate limit. Please wait a few minutes before you try again\". (and in fact waiting 30s/1min is enough).\n\nThis, understandably, doesn't get caught by `GitHubAbuseLimitHandler#isError`, and results in the request simply failing.\n\n**To Reproduce**\n\nSend the following request a few dozen times (or just a dozen when unauthenticated):\n\nhttps://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581\n\nObviously my actual use case is not to send the _same_ request over and over, but it's enough to reproduce the problem.\n\nInterestingly, you can just click that URL in your browser, refresh quickly a couple times, and you'll be able to observe the exact error I'm running into: HTTP 403 with no particular retry header.\n\nSee bottom of this messsage for more logs.\n\n**Expected behavior**\n\nIdeally, I'd expect such requests to be detected as secondary rate limit errors, and the client to just wait and retry. For my use case it's fine to wait a minute.\n\nFailing that, I'd settle for a way to override `GitHubAbuseLimitHandler#isError` and implement some dirty logic based on the response body in there. But this method is currently package-protected.\n\n**Desktop (please complete the following information):**\n - OS: Fedora 41\n - Browser [e.g. chrome, safari]: no browser involved\n - Version [e.g. 22]: no browser involved\n\n**Additional context**\n\nHere is a failing request/response with all details/headers. I got it using `-Djdk.httpclient.HttpClient.log=all`.\n\n```\n2025-01-15 13:04:53,295 INFO [jdk.htt.HttpClient] (executor-thread-1) REQUEST: https://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581 GET\n2025-01-15 13:04:53,295 INFO [jdk.htt.HttpClient] (executor-thread-1) HEADERS: REQUEST HEADERS:\nGET /search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581 HTTP/1.1\nContent-Length: 0\nHost: api.github.com\nUser-Agent: Java-http-client/17.0.13\nAccept: application/vnd.github+json\nAccept-Encoding: gzip\nAuthorization: token \nX-GitHub-Api-Version: 2022-11-28\n\n\n2025-01-15 13:04:53,422 INFO [jdk.htt.HttpClient] (HttpClient-3-Worker-0) HEADERS: RESPONSE HEADERS:\n access-control-allow-origin: *\n access-control-expose-headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset\n content-encoding: gzip\n content-security-policy: default-src 'none'\n content-type: application/json; charset=utf-8\n date: Wed, 15 Jan 2025 12:04:53 GMT\n referrer-policy: origin-when-cross-origin, strict-origin-when-cross-origin\n server: github.com\n strict-transport-security: max-age=31536000; includeSubdomains; preload\n transfer-encoding: chunked\n vary: Accept-Encoding, Accept, X-Requested-With\n x-content-type-options: nosniff\n x-frame-options: deny\n x-github-api-version-selected: 2022-11-28\n x-github-media-type: github.v3; format=json\n x-github-request-id: \n x-ratelimit-limit: 30\n x-ratelimit-remaining: 21\n x-ratelimit-reset: 1736942747\n x-ratelimit-resource: search\n x-ratelimit-used: 9\n x-xss-protection: 0\n\n\n2025-01-15 13:04:53,423 INFO [jdk.htt.HttpClient] (HttpClient-3-Worker-0) RESPONSE: (GET https://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581) 403 HTTP_1_1 Local port: 57158\n```\n\nI end up with this error, proving the secondary limit error wasn't detected:\n\n```\norg.kohsuke.github.GHException: Failed to retrieve https://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581\n at org.kohsuke.github.GitHubPageIterator.fetch(GitHubPageIterator.java:157)\n at org.kohsuke.github.GitHubPageIterator.hasNext(GitHubPageIterator.java:93)\n at org.kohsuke.github.PagedSearchIterable$1.hasNext(PagedSearchIterable.java:111)\n at org.kohsuke.github.PagedIterator.fetch(PagedIterator.java:116)\n at org.kohsuke.github.PagedIterator.hasNext(PagedIterator.java:84)\n at java.base/java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1855)\n at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.lambda$initPartialTraversalState$0(StreamSpliterators.java:292)\n at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(StreamSpliterators.java:206)\n at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(StreamSpliterators.java:161)\n at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:298)\n at java.base/java.util.Spliterators$1Adapter.hasNext(Spliterators.java:681)\n at io.quarkus.github.lottery.draw.Lottery$Draw.runSingleRound(Lottery.java:286)\n at io.quarkus.github.lottery.draw.Lottery.draw(Lottery.java:80)\n at io.quarkus.github.lottery.LotteryService.doDrawForRepository(LotteryService.java:109)\n at io.quarkus.github.lottery.LotteryService.drawForRepository(LotteryService.java:82)\n at io.quarkus.github.lottery.LotteryService.draw(LotteryService.java:66)\n at io.quarkus.github.lottery.LotteryService_ClientProxy.draw(Unknown Source)\n at io.quarkus.github.lottery.LotteryCli$DrawCommand.run(LotteryCli.java:27)\n at io.quarkus.github.lottery.LotteryCliCommandDispatcherImpl.dispatch(Unknown Source)\n at io.quarkus.github.lottery.LotteryCliCommandDispatcherImpl_Multiplexer.dispatch_9c21b751bd1c3c76c9e9f8d4cbcacbc05e9e7ed7(Unknown Source)\n at io.quarkus.github.lottery.LotteryCliCommandDispatcherImpl_Multiplexer_Observer_dispatch_9c21b751bd1c3c76c9e9f8d4cbcacbc05e9e7ed7_usg3oRfZFhFtsdK_zfgxrYi5m6Q.notify(Unknown Source)\n at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:351)\n at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:333)\n at io.quarkus.arc.impl.EventImpl$1.get(EventImpl.java:110)\n at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)\n at io.quarkus.vertx.core.runtime.VertxCoreRecorder$15.runWith(VertxCoreRecorder.java:637)\n at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)\n at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2654)\n at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)\n at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)\n at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)\n at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)\n at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n at java.base/java.lang.Thread.run(Thread.java:840)\nCaused by: org.kohsuke.github.HttpException: {\n \"documentation_url\": \"https://docs.github.com/free-pro-team@latest/rest/overview/rate-limits-for-the-rest-api#about-secondary-rate-limits\",\n \"message\": \"You have exceeded a secondary rate limit. Please wait a few minutes before you try again. If you reach out to GitHub Support for help, please include the request ID 6F00:24CFC5:.\"\n}\n at org.kohsuke.github.GitHubConnectorResponseErrorHandler$1.onError(GitHubConnectorResponseErrorHandler.java:83)\n at org.kohsuke.github.GitHubClient.detectKnownErrors(GitHubClient.java:504)\n at org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:464)\n at org.kohsuke.github.GitHubPageIterator.fetch(GitHubPageIterator.java:146)\n ... 33 more\n```", + "body": "Hello! Thanks very much for maintaining this great library! The changes coming in 2.x seem good, I'm eager to be an early adopter of it.\n\nDo you have rough ideas around\n\n- what might be broken in the 2.x train\n- what might still change in the 2.x train\n- how long until the 2.x train is out of beta\n\nNot looking for hard commitments or anything, just your general vibe.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2009/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2040/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -983,39 +860,39 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2040/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1975", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2039", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/events", - "html_url": "https://github.com/hub4j/github-api/issues/1975", - "id": 2604556081, - "node_id": "I_kwDOAAlq-s6bPl8x", - "number": 1975, - "title": "Implement \"Secondary rate limit\" behavior to internally throttle querying ", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2039/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2039/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2039/events", + "html_url": "https://github.com/hub4j/github-api/issues/2039", + "id": 2869632221, + "node_id": "I_kwDOAAlq-s6rCxzd", + "number": 2039, + "title": "Allow a GHPullRequest to set auto-merge", "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "login": "roxspring", + "id": 783694, + "node_id": "MDQ6VXNlcjc4MzY5NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/783694?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "url": "https://api.github.com/users/roxspring", + "html_url": "https://github.com/roxspring", + "followers_url": "https://api.github.com/users/roxspring/followers", + "following_url": "https://api.github.com/users/roxspring/following{/other_user}", + "gists_url": "https://api.github.com/users/roxspring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/roxspring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/roxspring/subscriptions", + "organizations_url": "https://api.github.com/users/roxspring/orgs", + "repos_url": "https://api.github.com/users/roxspring/repos", + "events_url": "https://api.github.com/users/roxspring/events{/privacy}", + "received_events_url": "https://api.github.com/users/roxspring/received_events", "type": "User", "user_view_type": "public", "site_admin": false @@ -1029,18 +906,27 @@ "color": "f4cc53", "default": false, "description": "" + }, + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 5, - "created_at": "2024-10-22T07:39:26Z", - "updated_at": "2025-09-04T16:55:29Z", - "closed_at": null, - "author_association": "MEMBER", + "comments": 7, + "created_at": "2025-02-21T17:32:36Z", + "updated_at": "2025-03-19T17:24:00Z", + "closed_at": "2025-03-19T17:24:00Z", + "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1054,11 +940,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "See #1805 \nSee #1842 \nSee #2009\n\nThis docs page describes secondary rate limit behavior: \nhttps://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#about-secondary-rate-limits\n\nAs of this reading it says: \n> You may encounter a secondary rate limit if you:\n\n> \n> * Make too many concurrent requests. No more than 100 concurrent requests are allowed. This limit is shared across the REST API and GraphQL API.\n> * Make too many requests to a single endpoint per minute. No more than 900 points per minute are allowed for REST API endpoints, and no more than 2,000 points per minute are allowed for the GraphQL API endpoint. For more information about points, see \"[Calculating points for the secondary rate limit](https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#calculating-points-for-the-secondary-rate-limit).\"\n> * Make too many requests per minute. No more than 90 seconds of CPU time per 60 seconds of real time is allowed. No more than 60 seconds of this CPU time may be for the GraphQL API. You can roughly estimate the CPU time by measuring the total response time for your API requests.\n> * Create too much content on GitHub in a short amount of time. In general, no more than 80 content-generating requests per minute and no more than 500 content-generating requests per hour are allowed. Some endpoints have lower content creation limits. Content creation limits include actions taken on the GitHub web interface as well as via the REST API and GraphQL API.\n> \n> These secondary rate limits are subject to change without notice. You may also encounter a secondary rate limit for undisclosed reasons.\n\nThese are incredibly loosely defined guides and you cannot query for them ahead of time. 👎 It looks like we need to take the path some users have suggested and make rate limiting much more resilient, potentially allowing users to write their own rate limit strategies for handling secondary rate limits. \n\nThe current internal `GitHubRateLimitChecker` would need to be replaced by a `PrimaryGitHubRateLimiter` which extends a new `GitHubRateLimiter` class/interface. Then each of the above bullet points would become a new rate limit tracking/enforcing class. All of them would need to be called before and after each query, and maintain their own configuration and calculated state. `GitHubRateLimiter` would provide the API and possibly helper functions to make that easier to do right. \n\nI think the basic API would be that the method call before a request is sent, would return an `Optional` and if more than one limiter returns a Duration the longest one is used. Or maybe return an optional record that includes a `reason` message and a duration, perhaps also a logLevel/severity. Make it easier to produce meaningful output. \n\n\n ", + "body": "I've been using the API to generate PRs for our main repository in a similar vein to dependabot, and would really like to be able to set those to auto-merge (which has been allowed in our repository):\n```java\nghPullRequest.requestAutoMerge();\n```\n\nClearly this isn't supported by the Java API, presumably because it's not supported by the GitHub REST API either. However it is supported by via a couple (oh, the irony!) of GraphQL API queries:\n\n```graphql\nquery GetPullRequestID {\n repository(name: \"$repo\", owner: \"$owner\") {\n pullRequest(number: \"$prnum\") {\n id\n }\n }\n}\n```\n\n```graphql\nmutation EnableAutoMergeOnPullRequest {\n enablePullRequestAutoMerge(input: {pullRequestId: \"$pullRequestID\", mergeMethod: MERGE}) {\n clientMutationId\n }\n}\n```\n\nRather than boiling the ocean by requesting general purpose public GraphQL support (#521), I wonder whether it might be acceptable to implement some low level GraphQL support that could be used internally to implement specific features not available in the REST API, such as enabling auto-merge on a PR. Perhaps in time this could become the basis for some general support but the immediate goal would be to enable access to APIs.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1975/reactions", - "total_count": 0, - "+1": 0, + "url": "https://api.github.com/repos/hub4j/github-api/issues/2039/reactions", + "total_count": 1, + "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, @@ -1067,54 +953,64 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2039/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2115", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2033", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/events", - "html_url": "https://github.com/hub4j/github-api/issues/2115", - "id": 3234980989, - "node_id": "I_kwDOAAlq-s7A0eR9", - "number": 2115, - "title": "Search API does not support advanced search will stop working on September 4, 2025", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2033/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2033/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2033/events", + "html_url": "https://github.com/hub4j/github-api/issues/2033", + "id": 2855685583, + "node_id": "I_kwDOAAlq-s6qNk3P", + "number": 2033, + "title": "Change GHRepository getIssue and getPullRequest to not mentiond ID and make it clear it is number", "user": { - "login": "donce", - "id": 1409983, - "node_id": "MDQ6VXNlcjE0MDk5ODM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1409983?v=4", + "login": "rnveach", + "id": 5427943, + "node_id": "MDQ6VXNlcjU0Mjc5NDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/donce", - "html_url": "https://github.com/donce", - "followers_url": "https://api.github.com/users/donce/followers", - "following_url": "https://api.github.com/users/donce/following{/other_user}", - "gists_url": "https://api.github.com/users/donce/gists{/gist_id}", - "starred_url": "https://api.github.com/users/donce/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/donce/subscriptions", - "organizations_url": "https://api.github.com/users/donce/orgs", - "repos_url": "https://api.github.com/users/donce/repos", - "events_url": "https://api.github.com/users/donce/events{/privacy}", - "received_events_url": "https://api.github.com/users/donce/received_events", + "url": "https://api.github.com/users/rnveach", + "html_url": "https://github.com/rnveach", + "followers_url": "https://api.github.com/users/rnveach/followers", + "following_url": "https://api.github.com/users/rnveach/following{/other_user}", + "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", + "organizations_url": "https://api.github.com/users/rnveach/orgs", + "repos_url": "https://api.github.com/users/rnveach/repos", + "events_url": "https://api.github.com/users/rnveach/events{/privacy}", + "received_events_url": "https://api.github.com/users/rnveach/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [], - "state": "open", + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-07-16T08:24:12Z", - "updated_at": "2025-07-16T08:26:16Z", - "closed_at": null, - "author_association": "NONE", + "comments": 1, + "created_at": "2025-02-15T19:55:08Z", + "updated_at": "2025-02-25T17:58:50Z", + "closed_at": "2025-02-25T17:58:50Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1128,9 +1024,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "`GHPullRequestSearchBuilder` is built on the previous GitHub API, which does not use advanced search.\n\nOn September 4, 2025, advanced search will be enabled by default, but currently, it's not supported (from [docs](https://docs.github.com/en/rest/search/search?apiVersion=2022-11-28#search-issues-and-pull-requests)):\n\n>Warning\n>Notice: Search for issues and pull requests will be overridden by advanced search on September 4, 2025. You can read more about this change on [the GitHub blog](https://github.blog/changelog/2025-03-06-github-issues-projects-api-support-for-issues-advanced-search-and-more/).\n\nI think the github client should support that - as an opt-in now, but after September 4, it will be the only possible way.\n\n\n", + "body": "`GHRepository#getIssue` takes id as an `int`. Same with `getPullRequest`.\nhttps://github.com/hub4j/github-api/blob/e14ec3b3677760714cd096ad8157a3e6a6dded65/src/main/java/org/kohsuke/github/GHRepository.java#L358\nhttps://github.com/hub4j/github-api/blob/e14ec3b3677760714cd096ad8157a3e6a6dded65/src/main/java/org/kohsuke/github/GHRepository.java#L1509\n\n`GHIssue` and `GHPullRequest` which extend `GHObject` returns a `long` for an `id`.\nhttps://github.com/hub4j/github-api/blob/e14ec3b3677760714cd096ad8157a3e6a6dded65/src/main/java/org/kohsuke/github/GHObject.java#L32\n\nTo call either, with the original object requires you to downcast.\n```\n\t\t\tif (issue) {\n\t\t\t\tfinal GHIssue issue = repository.getIssue((int) item.getId());\n\t\t\t} else {\n\t\t\t\tfinal GHPullRequest pullRequest = repository.getPullRequest((int) item.getId());\n\t\t\t}\n```\n\nIt seems to me both should be updated to be a `long` to make everything consistent and not require down casting.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2115/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2033/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1141,39 +1037,39 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2033/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2102", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2032", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/events", - "html_url": "https://github.com/hub4j/github-api/issues/2102", - "id": 3072490567, - "node_id": "I_kwDOAAlq-s63InxH", - "number": 2102, - "title": "Cannot retrieve author from github release", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/events", + "html_url": "https://github.com/hub4j/github-api/issues/2032", + "id": 2854448657, + "node_id": "I_kwDOAAlq-s6qI24R", + "number": 2032, + "title": "Add more methods to QueryBuilder", "user": { - "login": "solonovamax", - "id": 46940694, - "node_id": "MDQ6VXNlcjQ2OTQwNjk0", - "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "login": "rnveach", + "id": 5427943, + "node_id": "MDQ6VXNlcjU0Mjc5NDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/solonovamax", - "html_url": "https://github.com/solonovamax", - "followers_url": "https://api.github.com/users/solonovamax/followers", - "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", - "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", - "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", - "organizations_url": "https://api.github.com/users/solonovamax/orgs", - "repos_url": "https://api.github.com/users/solonovamax/repos", - "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", - "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "url": "https://api.github.com/users/rnveach", + "html_url": "https://github.com/rnveach", + "followers_url": "https://api.github.com/users/rnveach/followers", + "following_url": "https://api.github.com/users/rnveach/following{/other_user}", + "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", + "organizations_url": "https://api.github.com/users/rnveach/orgs", + "repos_url": "https://api.github.com/users/rnveach/repos", + "events_url": "https://api.github.com/users/rnveach/events{/privacy}", + "received_events_url": "https://api.github.com/users/rnveach/received_events", "type": "User", "user_view_type": "public", "site_admin": false @@ -1187,17 +1083,26 @@ "color": "0e8a16", "default": true, "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-05-19T04:52:41Z", - "updated_at": "2025-05-24T16:47:22Z", - "closed_at": null, + "comments": 5, + "created_at": "2025-02-14T18:22:40Z", + "updated_at": "2026-02-10T07:58:25Z", + "closed_at": "2026-02-10T07:58:25Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, @@ -1212,9 +1117,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Describe the bug**\nAuthor (`GHUser`) is not included in the `GHRelease` object, even though it is present in the api response.\n\nUnsure if this behaviour was changed in some past api update.\n\n**Expected behavior**\nAuthor is included.\n\n**Additional context**\napi docs: https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#list-releases\n\nexample api response:\n```json\n[\n {\n \"url\": \"https://api.github.com/repos/hashicorp/terraform/releases/218598268\",\n \"assets_url\": \"https://api.github.com/repos/hashicorp/terraform/releases/218598268/assets\",\n \"upload_url\": \"https://uploads.github.com/repos/hashicorp/terraform/releases/218598268/assets{?name,label}\",\n \"html_url\": \"https://github.com/hashicorp/terraform/releases/tag/v1.12.0\",\n \"id\": 218598268,\n \"author\": {\n \"login\": \"hc-github-team-es-release-engineering\",\n \"id\": 82989873,\n \"node_id\": \"MDQ6VXNlcjgyOTg5ODcz\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/82989873?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/hc-github-team-es-release-engineering\",\n \"html_url\": \"https://github.com/hc-github-team-es-release-engineering\",\n \"followers_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/followers\",\n \"following_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/orgs\",\n \"repos_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/repos\",\n \"events_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/received_events\",\n \"type\": \"User\",\n \"user_view_type\": \"public\",\n \"site_admin\": false\n },\n \"node_id\": \"RE_kwDOAQ6CpM4NB4t8\",\n \"tag_name\": \"v1.12.0\",\n \"target_commitish\": \"f9e9a59d7b5b48acf343e07fab768464bcdde4d7\",\n \"name\": \"v1.12.0\",\n \"draft\": false,\n \"prerelease\": false,\n \"created_at\": \"2025-05-14T14:11:25Z\",\n \"published_at\": \"2025-05-14T15:15:45Z\",\n \"assets\": [],\n \"tarball_url\": \"https://api.github.com/repos/hashicorp/terraform/tarball/v1.12.0\",\n \"zipball_url\": \"https://api.github.com/repos/hashicorp/terraform/zipball/v1.12.0\",\n \"body\": \"[truncated for brevity]\",\n \"reactions\": {\n \"url\": \"https://api.github.com/repos/hashicorp/terraform/releases/218598268/reactions\",\n \"total_count\": 11,\n \"+1\": 1,\n \"-1\": 0,\n \"laugh\": 0,\n \"hooray\": 0,\n \"confused\": 0,\n \"heart\": 0,\n \"rocket\": 10,\n \"eyes\": 0\n }\n }\n]\n```", + "body": "1)\n`GHPullRequestQueryBuilder` doesn't seem to support `pageSize(int)` but `GHIssueQueryBuilder` does.\n\nI don't know if there is a technical reason, but it would help to support repos with a large number of PRs. I didn't realize this was a possibility at first and took a long time to start iterating through issues.\n\n2)\n`GHIssueQueryBuilder` seems to still pull in PRs. Is it possible to add another method to the query to drop PRs from Issue queries and the same for Issues from PR queries. It would help the amount of data to transfer from the server if the server supported it.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2102/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2032/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1225,39 +1130,39 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2083", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2026", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/events", - "html_url": "https://github.com/hub4j/github-api/issues/2083", - "id": 2980993460, - "node_id": "I_kwDOAAlq-s6xrlm0", - "number": 2083, - "title": "OSGi Manifest - add maven plugin", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2026/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2026/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2026/events", + "html_url": "https://github.com/hub4j/github-api/issues/2026", + "id": 2843272749, + "node_id": "I_kwDOAAlq-s6peOYt", + "number": 2026, + "title": "GHIssueStateReason should add reopened", "user": { - "login": "stbischof", - "id": 33224746, - "node_id": "MDQ6VXNlcjMzMjI0NzQ2", - "avatar_url": "https://avatars.githubusercontent.com/u/33224746?v=4", + "login": "rnveach", + "id": 5427943, + "node_id": "MDQ6VXNlcjU0Mjc5NDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/stbischof", - "html_url": "https://github.com/stbischof", - "followers_url": "https://api.github.com/users/stbischof/followers", - "following_url": "https://api.github.com/users/stbischof/following{/other_user}", - "gists_url": "https://api.github.com/users/stbischof/gists{/gist_id}", - "starred_url": "https://api.github.com/users/stbischof/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/stbischof/subscriptions", - "organizations_url": "https://api.github.com/users/stbischof/orgs", - "repos_url": "https://api.github.com/users/stbischof/repos", - "events_url": "https://api.github.com/users/stbischof/events{/privacy}", - "received_events_url": "https://api.github.com/users/stbischof/received_events", + "url": "https://api.github.com/users/rnveach", + "html_url": "https://github.com/rnveach", + "followers_url": "https://api.github.com/users/rnveach/followers", + "following_url": "https://api.github.com/users/rnveach/following{/other_user}", + "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", + "organizations_url": "https://api.github.com/users/rnveach/orgs", + "repos_url": "https://api.github.com/users/rnveach/repos", + "events_url": "https://api.github.com/users/rnveach/events{/privacy}", + "received_events_url": "https://api.github.com/users/rnveach/received_events", "type": "User", "user_view_type": "public", "site_admin": false @@ -1271,18 +1176,27 @@ "color": "0e8a16", "default": true, "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 1, - "created_at": "2025-04-08T21:30:08Z", - "updated_at": "2025-04-13T06:54:04Z", - "closed_at": null, - "author_association": "NONE", + "created_at": "2025-02-10T18:22:59Z", + "updated_at": "2025-02-14T17:51:34Z", + "closed_at": "2025-02-14T17:51:34Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1296,9 +1210,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "I would like to use this lib in an OSGi Framework. For this i would need some Metadata in the Manifest.MF.\n\nI would create a PR that adds this support using the bnd-maven-plugin.", + "body": "While going against a repository I am involved with, I recieved this message in the console:\n````\norg.kohsuke.github.internal.EnumUtils getEnumOrDefault\nWARNING: Unknown value reopened for enum class org.kohsuke.github.GHIssueStateReason, defaulting to UNKNOWN\n````\nWould be best if it was added for proper recognition.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2083/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2026/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1309,82 +1223,54 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2026/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2082", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2011", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/events", - "html_url": "https://github.com/hub4j/github-api/issues/2082", - "id": 2973118122, - "node_id": "I_kwDOAAlq-s6xNi6q", - "number": 2082, - "title": "Update Wiremock to v3 and JUnit5", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2011/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2011/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2011/events", + "html_url": "https://github.com/hub4j/github-api/issues/2011", + "id": 2796095271, + "node_id": "I_kwDOAAlq-s6mqQcn", + "number": 2011, + "title": "Support for /app/installation-requests", "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "login": "anujhydrabadi", + "id": 129152617, + "node_id": "U_kgDOB7K2aQ", + "avatar_url": "https://avatars.githubusercontent.com/u/129152617?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "url": "https://api.github.com/users/anujhydrabadi", + "html_url": "https://github.com/anujhydrabadi", + "followers_url": "https://api.github.com/users/anujhydrabadi/followers", + "following_url": "https://api.github.com/users/anujhydrabadi/following{/other_user}", + "gists_url": "https://api.github.com/users/anujhydrabadi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anujhydrabadi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anujhydrabadi/subscriptions", + "organizations_url": "https://api.github.com/users/anujhydrabadi/orgs", + "repos_url": "https://api.github.com/users/anujhydrabadi/repos", + "events_url": "https://api.github.com/users/anujhydrabadi/events{/privacy}", + "received_events_url": "https://api.github.com/users/anujhydrabadi/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - }, - { - "id": 1780165359, - "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", - "name": "breaking change", - "color": "b60205", - "default": false, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 0, - "created_at": "2025-04-04T18:38:07Z", - "updated_at": "2025-04-04T18:38:23Z", - "closed_at": null, - "author_association": "MEMBER", + "created_at": "2025-01-17T18:43:29Z", + "updated_at": "2025-01-21T06:57:01Z", + "closed_at": "2025-01-21T06:57:01Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1398,9 +1284,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "See \nhttps://wiremock.org/docs/junit-jupiter/\n\n GithubWireMockRule creates and manages multiple WireMockServers. Need to do the same for JUnit5 but not sure how composable the JUnit5 WireMock extension is. Might need to move to an abstract base test class that instantiates all the servers. \n\nI think v3 is Java 11+ only but if it isn't do that as well. ", + "body": "Request to support the following endpoint: https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#list-installation-requests-for-the-authenticated-app", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2082/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2011/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1411,64 +1297,54 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2011/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2076", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2008", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/events", - "html_url": "https://github.com/hub4j/github-api/issues/2076", - "id": 2957281274, - "node_id": "I_kwDOAAlq-s6wRIf6", - "number": 2076, - "title": "Inconsistent use of glob imports", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2008/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2008/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2008/events", + "html_url": "https://github.com/hub4j/github-api/issues/2008", + "id": 2788286884, + "node_id": "I_kwDOAAlq-s6mMeGk", + "number": 2008, + "title": "Website down", "user": { - "login": "solonovamax", - "id": 46940694, - "node_id": "MDQ6VXNlcjQ2OTQwNjk0", - "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "login": "wgorder-kr", + "id": 60753563, + "node_id": "MDQ6VXNlcjYwNzUzNTYz", + "avatar_url": "https://avatars.githubusercontent.com/u/60753563?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/solonovamax", - "html_url": "https://github.com/solonovamax", - "followers_url": "https://api.github.com/users/solonovamax/followers", - "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", - "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", - "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", - "organizations_url": "https://api.github.com/users/solonovamax/orgs", - "repos_url": "https://api.github.com/users/solonovamax/repos", - "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", - "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "url": "https://api.github.com/users/wgorder-kr", + "html_url": "https://github.com/wgorder-kr", + "followers_url": "https://api.github.com/users/wgorder-kr/followers", + "following_url": "https://api.github.com/users/wgorder-kr/following{/other_user}", + "gists_url": "https://api.github.com/users/wgorder-kr/gists{/gist_id}", + "starred_url": "https://api.github.com/users/wgorder-kr/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/wgorder-kr/subscriptions", + "organizations_url": "https://api.github.com/users/wgorder-kr/orgs", + "repos_url": "https://api.github.com/users/wgorder-kr/repos", + "events_url": "https://api.github.com/users/wgorder-kr/events{/privacy}", + "received_events_url": "https://api.github.com/users/wgorder-kr/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-03-28T21:25:41Z", - "updated_at": "2025-03-29T18:00:33Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", + "comments": 3, + "created_at": "2025-01-14T21:11:21Z", + "updated_at": "2025-02-07T19:44:32Z", + "closed_at": "2025-02-07T19:44:30Z", + "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1482,11 +1358,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "Some classes use glob imports, while others don't. The use of glob imports across files seems to be rather inconsistent.\n\nCurrently, with spotless, there doesn't seem to be a way to enforce using/disallowing glob imports, however there is an open issue for it: https://github.com/diffplug/spotless/issues/649.\nSome comments on the issue suggest using\n```xml\n\n Remove wildcard imports\n import\\s+(?:static\\s+)?[^\\*\\s]+\\*;(\\r\\n|\\r|\\n)\n $1\n\n```\nto remove all the glob imports, however this solution will simply remove them and won't replace them with the appropriate imports, causing the compile to fail.\n\nOpened due to discussion in #2074", + "body": "Can you get your website back up? I am new to the project but is a bit painful to have to look through the test cases for basics.\r\n\r\nIt looks like you were using github pages so not sure what happened.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2076/reactions", - "total_count": 1, - "+1": 1, + "url": "https://api.github.com/repos/hub4j/github-api/issues/2008/reactions", + "total_count": 5, + "+1": 5, "-1": 0, "laugh": 0, "hooray": 0, @@ -1495,64 +1371,73 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2008/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2075", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1993", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/events", - "html_url": "https://github.com/hub4j/github-api/issues/2075", - "id": 2957271743, - "node_id": "I_kwDOAAlq-s6wRGK_", - "number": 2075, - "title": "Inconsistent use of license header", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1993/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1993/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1993/events", + "html_url": "https://github.com/hub4j/github-api/issues/1993", + "id": 2715964451, + "node_id": "I_kwDOAAlq-s6h4lQj", + "number": 1993, + "title": "Feature Request: Fork Only Default Branch", "user": { - "login": "solonovamax", - "id": 46940694, - "node_id": "MDQ6VXNlcjQ2OTQwNjk0", - "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "login": "gounthar", + "id": 116569, + "node_id": "MDQ6VXNlcjExNjU2OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/116569?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/solonovamax", - "html_url": "https://github.com/solonovamax", - "followers_url": "https://api.github.com/users/solonovamax/followers", - "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", - "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", - "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", - "organizations_url": "https://api.github.com/users/solonovamax/orgs", - "repos_url": "https://api.github.com/users/solonovamax/repos", - "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", - "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "url": "https://api.github.com/users/gounthar", + "html_url": "https://github.com/gounthar", + "followers_url": "https://api.github.com/users/gounthar/followers", + "following_url": "https://api.github.com/users/gounthar/following{/other_user}", + "gists_url": "https://api.github.com/users/gounthar/gists{/gist_id}", + "starred_url": "https://api.github.com/users/gounthar/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/gounthar/subscriptions", + "organizations_url": "https://api.github.com/users/gounthar/orgs", + "repos_url": "https://api.github.com/users/gounthar/repos", + "events_url": "https://api.github.com/users/gounthar/events{/privacy}", + "received_events_url": "https://api.github.com/users/gounthar/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-03-28T21:21:56Z", - "updated_at": "2025-03-29T18:00:16Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", + "comments": 8, + "created_at": "2024-12-03T20:58:22Z", + "updated_at": "2025-01-21T06:30:47Z", + "closed_at": "2025-01-21T06:30:46Z", + "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1566,9 +1451,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "There is an inconsistent use of the license header.\nCurrently, some files have a license header added, but others don't.\n\nSince you're using spotless, it can be used to enforce the license header:\nhttps://github.com/diffplug/spotless/tree/main/plugin-maven#license-header\n\nOpened due to discussion in #2074", + "body": "### What feature do you want to see added?\r\n\r\n## Current Situation\r\nWhen forking a repository on GitHub, our current process retrieves all branches from the original repository.\r\n\r\n## Issue\r\nThis approach may be inefficient and unnecessary for [our use case](https://github.com/jenkins-infra/plugin-modernizer-tool/issues/104).\r\n\r\n## Desired Outcome\r\nWe aim to fork only the default branch of the repository, as this is typically sufficient for our work.\r\n\r\n## GitHub GUI Option\r\nThe GitHub web interface provides an option to fork only the default branch (usually the main branch).\r\n\r\n\r\n## Benefits\r\n1. **Efficiency**: Reduces unnecessary data transfer and storage.\r\n2. **Simplicity**: Maintains a cleaner repository structure in our forks.\r\n3. **Focus**: Aligns with our primary need of working with the main branch.\r\n\r\n## Conclusion\r\nOptimizing our forking process to retrieve only the main branch will streamline our workflow and improve overall efficiency. This change aligns with best practices for managing forks when only the main branch is needed for development or analysis purposes.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2075/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1993/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1579,64 +1464,54 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1993/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2058", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1985", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/events", - "html_url": "https://github.com/hub4j/github-api/issues/2058", - "id": 2913781594, - "node_id": "I_kwDOAAlq-s6trMda", - "number": 2058, - "title": "Enable hiding of comments", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1985/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1985/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1985/events", + "html_url": "https://github.com/hub4j/github-api/issues/1985", + "id": 2654357698, + "node_id": "I_kwDOAAlq-s6eNkjC", + "number": 1985, + "title": "/notifications interface return \"Unable to parse If-Modified-Since request header\"", "user": { - "login": "koppor", - "id": 1366654, - "node_id": "MDQ6VXNlcjEzNjY2NTQ=", - "avatar_url": "https://avatars.githubusercontent.com/u/1366654?v=4", + "login": "AsherSu", + "id": 59462016, + "node_id": "MDQ6VXNlcjU5NDYyMDE2", + "avatar_url": "https://avatars.githubusercontent.com/u/59462016?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/koppor", - "html_url": "https://github.com/koppor", - "followers_url": "https://api.github.com/users/koppor/followers", - "following_url": "https://api.github.com/users/koppor/following{/other_user}", - "gists_url": "https://api.github.com/users/koppor/gists{/gist_id}", - "starred_url": "https://api.github.com/users/koppor/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/koppor/subscriptions", - "organizations_url": "https://api.github.com/users/koppor/orgs", - "repos_url": "https://api.github.com/users/koppor/repos", - "events_url": "https://api.github.com/users/koppor/events{/privacy}", - "received_events_url": "https://api.github.com/users/koppor/received_events", + "url": "https://api.github.com/users/AsherSu", + "html_url": "https://github.com/AsherSu", + "followers_url": "https://api.github.com/users/AsherSu/followers", + "following_url": "https://api.github.com/users/AsherSu/following{/other_user}", + "gists_url": "https://api.github.com/users/AsherSu/gists{/gist_id}", + "starred_url": "https://api.github.com/users/AsherSu/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/AsherSu/subscriptions", + "organizations_url": "https://api.github.com/users/AsherSu/orgs", + "repos_url": "https://api.github.com/users/AsherSu/repos", + "events_url": "https://api.github.com/users/AsherSu/events{/privacy}", + "received_events_url": "https://api.github.com/users/AsherSu/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 4, - "created_at": "2025-03-12T12:20:51Z", - "updated_at": "2025-03-28T16:33:37Z", - "closed_at": null, - "author_association": "NONE", + "comments": 0, + "created_at": "2024-11-13T06:27:11Z", + "updated_at": "2024-11-21T03:58:01Z", + "closed_at": "2024-11-21T03:58:01Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1650,9 +1525,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "I have comment count 3, but the PR has much more: https://github.com/JabRef/jabref/pull/12710\n\nI \"deleted\" the other comments using `comment.delete()`. It seems this has no effect on the UI.\n\nIn the UI, one can use \"Hide\"\n\n![Image](https://github.com/user-attachments/assets/5522c8c3-0764-49bf-bcc1-86a472b24d06)\n\n![Image](https://github.com/user-attachments/assets/623772ef-30b7-4b04-bac7-abc174289702)\n\nShould be possible via API, too?", + "body": "**Describe the bug**\r\n/notifications interface return \"Unable to parse If-Modified-Since request header\"\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n```\r\ngithub.listNotifications()\r\n .nonBlocking(true)\r\n .participating(false)\r\n .read(true) \r\n .iterator()\r\n .next()\r\n .getRepository()\r\n .getOwnerName()\r\n```\r\n\r\n**Expected behavior**\r\nreturn owner\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: [e.g. iOS]\r\n - Browser [e.g. chrome, safari]\r\n - Version [e.g. 22]\r\n\r\n**Additional context**\r\n```\r\nCaused by: org.kohsuke.github.HttpException: {\"message\":\"Unable to parse If-Modified-Since request header. Please make sure value is in an acceptable format.\",\"documentation_url\":\"https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user\",\"status\":\"422\"}\r\n\tat org.kohsuke.github.GitHubConnectorResponseErrorHandler$1.onError(GitHubConnectorResponseErrorHandler.java:83)\r\n\tat org.kohsuke.github.GitHubClient.detectKnownErrors(GitHubClient.java:504)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:464)\r\n\tat org.kohsuke.github.GitHubPageIterator.fetch(GitHubPageIterator.java:146)\r\n\tat org.kohsuke.github.GitHubPageIterator.hasNext(GitHubPageIterator.java:93)\r\n\tat org.kohsuke.github.PagedIterator.fetch(PagedIterator.java:116)\r\n\tat org.kohsuke.github.PagedIterator.nextPageArray(PagedIterator.java:144)\r\n\tat org.kohsuke.github.PagedIterable.toArray(PagedIterable.java:85)\r\n\tat org.kohsuke.github.GitHubPageContentsIterable.toResponse(GitHubPageContentsIterable.java:70)\r\n\tat org.kohsuke.github.GHNotificationStream$1.fetch(GHNotificationStream.java:194)\r\n\t... 5 more\r\n```", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2058/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1985/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1663,64 +1538,54 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1985/timeline", "performed_via_github_app": null, - "state_reason": "reopened", + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1454", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1970", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/events", - "html_url": "https://github.com/hub4j/github-api/issues/1454", - "id": 1229507490, - "node_id": "I_kwDOAAlq-s5JSMui", - "number": 1454, - "title": "Please provide streaming for upload large content ", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1970/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1970/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1970/events", + "html_url": "https://github.com/hub4j/github-api/issues/1970", + "id": 2567834054, + "node_id": "I_kwDOAAlq-s6ZDgnG", + "number": 1970, + "title": "Cannot fork repository to personal account using GitHub app", "user": { - "login": "Vampire", - "id": 325196, - "node_id": "MDQ6VXNlcjMyNTE5Ng==", - "avatar_url": "https://avatars.githubusercontent.com/u/325196?v=4", + "login": "jonesbusy", + "id": 825750, + "node_id": "MDQ6VXNlcjgyNTc1MA==", + "avatar_url": "https://avatars.githubusercontent.com/u/825750?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/Vampire", - "html_url": "https://github.com/Vampire", - "followers_url": "https://api.github.com/users/Vampire/followers", - "following_url": "https://api.github.com/users/Vampire/following{/other_user}", - "gists_url": "https://api.github.com/users/Vampire/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Vampire/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Vampire/subscriptions", - "organizations_url": "https://api.github.com/users/Vampire/orgs", - "repos_url": "https://api.github.com/users/Vampire/repos", - "events_url": "https://api.github.com/users/Vampire/events{/privacy}", - "received_events_url": "https://api.github.com/users/Vampire/received_events", + "url": "https://api.github.com/users/jonesbusy", + "html_url": "https://github.com/jonesbusy", + "followers_url": "https://api.github.com/users/jonesbusy/followers", + "following_url": "https://api.github.com/users/jonesbusy/following{/other_user}", + "gists_url": "https://api.github.com/users/jonesbusy/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jonesbusy/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jonesbusy/subscriptions", + "organizations_url": "https://api.github.com/users/jonesbusy/orgs", + "repos_url": "https://api.github.com/users/jonesbusy/repos", + "events_url": "https://api.github.com/users/jonesbusy/events{/privacy}", + "received_events_url": "https://api.github.com/users/jonesbusy/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 7, - "created_at": "2022-05-09T10:34:22Z", - "updated_at": "2025-03-26T18:56:07Z", - "closed_at": null, - "author_association": "NONE", + "comments": 0, + "created_at": "2024-10-05T10:31:49Z", + "updated_at": "2024-10-06T04:36:20Z", + "closed_at": "2024-10-06T04:36:20Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1734,11 +1599,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "I have a Gradle build where I build a Docker image tar file which has a size of 166 MiB.\r\nI use the GitHub publish Gradle plugin and tried to upload this Docker image as asset to the release.\r\nThis consistently resulted in an `OutOfMemoryError`.\r\n\r\nThe GitHub publish Gradle plugin under the hood uses this library.\r\nAnd I also easily reproduced it stand-alone.\r\nIn version 1.1xx, you use an `HttpsUrlConnection` without setting it to fixed-length streaming or chunking mode and thus the JRE uses a byte-array output stream to colllect the whole body in RAM to determine the size up-front.\r\nIn version 1.3xx many things changed, but now you use your `GitHubRequest.Builder#with(java.io.InputStream)` method to load the whole file into RAM using `IOUtils.toByteArray`.\r\n\r\nSo at different places both load the whole file into RAM instead of properly streaming it.\r\nPlease support at least giving the size to methods like `uploadAsset` so that the size can be set as HTTP header but the content be streamed, or if GitHub supports it maybe even using chunked mode additionally if no explicit size was given.\r\n\r\nThe problem can pretty easily be reproduced using:\r\n```java\r\ngithub\r\n .getRepository(\"my/repository\")\r\n .listReleases()\r\n .iterator()\r\n .next()\r\n .uploadAsset(\"foo.tar.gz\", new FileInputStream(\"file/that/is/too/large/for/RAM\"), \"application/octet-stream\")\r\n```", + "body": "**Describe the bug**\r\n\r\nI'm using GitHub app to authenticate and I need to fork repository to my personal account. The app has the required access.\r\n\r\nBut due to call on `getMyself()` at https://github.com/hub4j/github-api/blob/768c7154bdb84e775dfafea6b0cb27fa57d835c7/src/main/java/org/kohsuke/github/GHRepository.java#L1467 it's not possible to use public GHRepository fork() throws IOException`\r\n\r\nI would suggest to create a new API GHRepository forkTo(GHUser user) allowing to fork a repository to a given user using GitHub app authentication.\r\n\r\nWould you agree ?\r\n\r\n**To Reproduce**\r\n\r\n- Create GitHub app. Grant permisssion to create/fork repositorx\r\n- Try to use fork()\r\n\r\nSeen on https://github.com/jenkinsci/plugin-modernizer-tool/pull/295\r\n\r\n**Expected behavior**\r\n\r\nI think it's the normal behavior. When calling the fork() the fork is done but fail on the getMyself call\r\n\r\nThat's why I suggest to create a new public method `forkTo(GHUser user)` similar to `forkTo(GHOrganisation org)`\r\n\r\n**Desktop (please complete the following information):**\r\n\r\nAll\r\n\r\n**Additional context**\r\n\r\nI can submit a proposal\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1454/reactions", - "total_count": 0, - "+1": 0, + "url": "https://api.github.com/repos/hub4j/github-api/issues/1970/reactions", + "total_count": 1, + "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, @@ -1747,63 +1612,53 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1970/timeline", "performed_via_github_app": null, - "state_reason": "reopened", + "state_reason": "not_planned", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1967", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1963", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/events", - "html_url": "https://github.com/hub4j/github-api/issues/1967", - "id": 2564089274, - "node_id": "I_kwDOAAlq-s6Y1OW6", - "number": 1967, - "title": "Branch rename is missing", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1963/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1963/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1963/events", + "html_url": "https://github.com/hub4j/github-api/issues/1963", + "id": 2562978157, + "node_id": "I_kwDOAAlq-s6Yw_Ft", + "number": 1963, + "title": "org.kohsuke.github.HttpException for getOrganization", "user": { - "login": "sbouchexbellomie-Philips", - "id": 182072604, - "node_id": "U_kgDOCto1HA", - "avatar_url": "https://avatars.githubusercontent.com/u/182072604?v=4", + "login": "bisegni", + "id": 3001087, + "node_id": "MDQ6VXNlcjMwMDEwODc=", + "avatar_url": "https://avatars.githubusercontent.com/u/3001087?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/sbouchexbellomie-Philips", - "html_url": "https://github.com/sbouchexbellomie-Philips", - "followers_url": "https://api.github.com/users/sbouchexbellomie-Philips/followers", - "following_url": "https://api.github.com/users/sbouchexbellomie-Philips/following{/other_user}", - "gists_url": "https://api.github.com/users/sbouchexbellomie-Philips/gists{/gist_id}", - "starred_url": "https://api.github.com/users/sbouchexbellomie-Philips/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/sbouchexbellomie-Philips/subscriptions", - "organizations_url": "https://api.github.com/users/sbouchexbellomie-Philips/orgs", - "repos_url": "https://api.github.com/users/sbouchexbellomie-Philips/repos", - "events_url": "https://api.github.com/users/sbouchexbellomie-Philips/events{/privacy}", - "received_events_url": "https://api.github.com/users/sbouchexbellomie-Philips/received_events", + "url": "https://api.github.com/users/bisegni", + "html_url": "https://github.com/bisegni", + "followers_url": "https://api.github.com/users/bisegni/followers", + "following_url": "https://api.github.com/users/bisegni/following{/other_user}", + "gists_url": "https://api.github.com/users/bisegni/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bisegni/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bisegni/subscriptions", + "organizations_url": "https://api.github.com/users/bisegni/orgs", + "repos_url": "https://api.github.com/users/bisegni/repos", + "events_url": "https://api.github.com/users/bisegni/events{/privacy}", + "received_events_url": "https://api.github.com/users/bisegni/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2024-10-03T13:35:26Z", - "updated_at": "2025-03-23T07:25:04Z", - "closed_at": null, + "comments": 1, + "created_at": "2024-10-03T02:26:33Z", + "updated_at": "2024-10-03T02:39:37Z", + "closed_at": "2024-10-03T02:39:37Z", "author_association": "NONE", "type": null, "active_lock_reason": null, @@ -1818,9 +1673,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "Ability to rename a branch is missing\r\n\r\nGHBranch.rename should be added", + "body": "**Describe the bug**\r\nI have a code that worked to get organization information using github application installed into this application. Not it s not working anymore getting the error below:\r\nCaused by: org.kohsuke.github.HttpException: {\"message\":\"Bad credentials\",\"documentation_url\":\"https://docs.github.com/rest\",\"status\":\"401\"}\r\n\tat org.kohsuke.github.GitHubConnectorResponseErrorHandler$1.onError(GitHubConnectorResponseErrorHandler.java:83)\r\n\tat org.kohsuke.github.GitHubClient.detectKnownErrors(GitHubClient.java:504)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:464)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:427)\r\n\tat org.kohsuke.github.Requester.fetch(Requester.java:85)\r\n\tat org.kohsuke.github.GitHub.getOrganization(GitHub.java:640)\r\n\t\r\nusing github app key, id and installation id i can authenticate and get app installation information but when i try to get the organization i got error, below the installation with the information loaded:\r\n```\r\nappInstallation = {GHAppInstallation@18308} \"GHAppInstallation@eb1306c[accessTokenUrl=https://api.github.com/app/installations/55541328/access_tokens,appId=1014645,events=[],htmlUrl=https://github.com/organizations/ad-build-test/settings/installations/55541328,permissions={members=WRITE, contents=WRITE, metadata=READ, pull_requests=WRITE, repository_hooks=WRITE, team_discussions=WRITE, organization_plan=READ, organization_hooks=WRITE, organization_events=READ, organization_secrets=WRITE, organization_projects=ADMIN, organization_codespaces=WRITE, organization_custom_roles=WRITE, organization_user_blocking=WRITE, organization_administration=WRITE, organization_custom_org_roles=WRITE, organization_actions_variables=WRITE, organization_custom_properties=ADMIN, organization_codespaces_secrets=WRITE, organization_dependabot_secrets=WRITE, organization_codespaces_settings=WRITE, organization_self_hosted_runners=WRITE, organization_announcement_banners=WRITE, organization_personal_access_tokens=WRITE, organization_copilot_seat_managemen\"\r\n account = {GHUser@18330} \"GHUser@5ee60e32[suspendedAt=,bio=,blog=,company=,email=,followers=0,following=0,hireable=false,location=,login=ad-build-test,name=,type=Organization,createdAt=,id=168671263,nodeId=O_kgDOCg24Hw,updatedAt=,url=https://api.github.com/users/ad-build-test]\"\r\n accessTokenUrl = \"https://api.github.com/app/installations/55541328/access_tokens\"\r\n repositoriesUrl = \"https://api.github.com/installation/repositories\"\r\n appId = 1014645\r\n targetId = 168671263\r\n targetType = {GHTargetType@18333} \"ORGANIZATION\"\r\n permissions = {LinkedHashMap@18334} size = 26\r\n events = {ArrayList@18335} size = 0\r\n singleFileName = null\r\n repositorySelection = {GHRepositorySelection@18336} \"ALL\"\r\n htmlUrl = \"https://github.com/organizations/ad-build-test/settings/installations/55541328\"\r\n suspendedAt = null\r\n suspendedBy = null\r\n responseHeaderFields = {Collections$UnmodifiableMap@18338} size = 19\r\n url = null\r\n id = 55541328\r\n nodeId = null\r\n createdAt = \"2024-10-03T00:29:22.000Z\"\r\n updatedAt = \"2024-10-03T02:20:09.000Z\"\r\n root = {GitHub@18341} \r\n```\r\n\r\ni have gave all the authorization to ad-build-test organization but i receive always the same error, to note that the same code worked month ago. Any sugestion?\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1967/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1963/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1831,64 +1686,73 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1963/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1965", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1957", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/events", - "html_url": "https://github.com/hub4j/github-api/issues/1965", - "id": 2563920009, - "node_id": "I_kwDOAAlq-s6Y0lCJ", - "number": 1965, - "title": "Deployment deletion is missing", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1957/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1957/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1957/events", + "html_url": "https://github.com/hub4j/github-api/issues/1957", + "id": 2553307162, + "node_id": "I_kwDOAAlq-s6YMGAa", + "number": 1957, + "title": "GHRepository.getPullRequests(GHIssueState) not deprecated but removed from 2.x", "user": { - "login": "sbouchexbellomie-Philips", - "id": 182072604, - "node_id": "U_kgDOCto1HA", - "avatar_url": "https://avatars.githubusercontent.com/u/182072604?v=4", + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/sbouchexbellomie-Philips", - "html_url": "https://github.com/sbouchexbellomie-Philips", - "followers_url": "https://api.github.com/users/sbouchexbellomie-Philips/followers", - "following_url": "https://api.github.com/users/sbouchexbellomie-Philips/following{/other_user}", - "gists_url": "https://api.github.com/users/sbouchexbellomie-Philips/gists{/gist_id}", - "starred_url": "https://api.github.com/users/sbouchexbellomie-Philips/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/sbouchexbellomie-Philips/subscriptions", - "organizations_url": "https://api.github.com/users/sbouchexbellomie-Philips/orgs", - "repos_url": "https://api.github.com/users/sbouchexbellomie-Philips/repos", - "events_url": "https://api.github.com/users/sbouchexbellomie-Philips/events{/privacy}", - "received_events_url": "https://api.github.com/users/sbouchexbellomie-Philips/received_events", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + }, + { + "id": 1780165359, + "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", + "name": "breaking change", + "color": "b60205", + "default": false, "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2024-10-03T12:23:11Z", - "updated_at": "2025-03-23T07:24:47Z", - "closed_at": null, - "author_association": "NONE", + "comments": 1, + "created_at": "2024-09-27T16:21:56Z", + "updated_at": "2025-03-18T21:07:41Z", + "closed_at": "2025-03-18T21:07:41Z", + "author_association": "MEMBER", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1902,9 +1766,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "Ability to delete a deployment is missing\r\n\r\nGHDeployment.delete should be added\r\n", + "body": "https://github.com/hub4j/github-api/pull/1935/files#r1778850947 - Anchor\r\n\r\n\r\n@ihrigb \r\nNoted that `GHRepository.getPullRequests(GHIssueState)` was not marked as Deprecated but was removed in `2.0-alpha-1`. \r\n\r\nDid a search on usages:\r\nhttps://github.com/search?q=org%3Ajenkinsci+getPullRequests+path%3A%2F%5Esrc%5C%2Fmain%5C%2Fjava%5C%2F%2F+org.kohsuke.github&type=code\r\n\r\nIt looks like there's at least one usage in the wild, and since it is in Jenkins it will cause breaks for some time to come. \r\nhttps://github.com/jenkinsci/ghprb-plugin/blob/master/src/main/java/org/jenkinsci/plugins/ghprb/GhprbRepository.java#L145\r\n\r\nThere's a similar one for listPullRequests(). \r\n\r\nOptions:\r\n* Bring some methods back as bridge methods in 2.0 to not break Jenkins plugins. \r\n* Change to 1.x that converts methods removed in 2.x to bridge methods - this would force projects to change their code in their next release while maintaining binary compatibility. Maybe only convert some methods. This might be a way to push some additional changes into 2.x.\r\n\r\nOn the other hand this is a 2.0 release, some incompatibility is to be expected. \r\n\r\n\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1965/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1957/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1915,63 +1779,53 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1957/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2041", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1951", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/events", - "html_url": "https://github.com/hub4j/github-api/issues/2041", - "id": 2871292068, - "node_id": "I_kwDOAAlq-s6rJHCk", - "number": 2041, - "title": "should fromCredentials not be public?", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1951/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1951/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1951/events", + "html_url": "https://github.com/hub4j/github-api/issues/1951", + "id": 2545520390, + "node_id": "I_kwDOAAlq-s6XuY8G", + "number": 1951, + "title": "Sharing of this Github API ", "user": { - "login": "maxandersen", - "id": 54129, - "node_id": "MDQ6VXNlcjU0MTI5", - "avatar_url": "https://avatars.githubusercontent.com/u/54129?v=4", + "login": "aeonSolutions", + "id": 7936768, + "node_id": "MDQ6VXNlcjc5MzY3Njg=", + "avatar_url": "https://avatars.githubusercontent.com/u/7936768?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/maxandersen", - "html_url": "https://github.com/maxandersen", - "followers_url": "https://api.github.com/users/maxandersen/followers", - "following_url": "https://api.github.com/users/maxandersen/following{/other_user}", - "gists_url": "https://api.github.com/users/maxandersen/gists{/gist_id}", - "starred_url": "https://api.github.com/users/maxandersen/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/maxandersen/subscriptions", - "organizations_url": "https://api.github.com/users/maxandersen/orgs", - "repos_url": "https://api.github.com/users/maxandersen/repos", - "events_url": "https://api.github.com/users/maxandersen/events{/privacy}", - "received_events_url": "https://api.github.com/users/maxandersen/received_events", + "url": "https://api.github.com/users/aeonSolutions", + "html_url": "https://github.com/aeonSolutions", + "followers_url": "https://api.github.com/users/aeonSolutions/followers", + "following_url": "https://api.github.com/users/aeonSolutions/following{/other_user}", + "gists_url": "https://api.github.com/users/aeonSolutions/gists{/gist_id}", + "starred_url": "https://api.github.com/users/aeonSolutions/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/aeonSolutions/subscriptions", + "organizations_url": "https://api.github.com/users/aeonSolutions/orgs", + "repos_url": "https://api.github.com/users/aeonSolutions/repos", + "events_url": "https://api.github.com/users/aeonSolutions/events{/privacy}", + "received_events_url": "https://api.github.com/users/aeonSolutions/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 5, - "created_at": "2025-02-22T20:16:12Z", - "updated_at": "2025-03-23T07:21:59Z", - "closed_at": null, + "comments": 1, + "created_at": "2024-09-24T14:07:14Z", + "updated_at": "2025-01-02T23:27:51Z", + "closed_at": "2025-01-02T23:27:51Z", "author_association": "NONE", "type": null, "active_lock_reason": null, @@ -1986,11 +1840,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Describe the bug**\nGithubBuilder.fromCredentials is not public and given the auth provider field is not public it is not possible to implement the \"honor .github and env\" manually.\n\nThus should that method not be public? \n\n", + "body": "Hi there @bernd @vbehar @kozmic @jkrall @derfred \r\ngreat work! 😍\r\n\r\nI'm sharing your project on my own C++ project for Github API\r\nhttps://github.com/aeonSolutions/AeonLabs-GitHub-API-C-library\r\n\r\n👍", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2041/reactions", - "total_count": 0, - "+1": 0, + "url": "https://api.github.com/repos/hub4j/github-api/issues/1951/reactions", + "total_count": 2, + "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, @@ -1999,64 +1853,64 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1951/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1798", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1926", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/events", - "html_url": "https://github.com/hub4j/github-api/issues/1798", - "id": 2147359719, - "node_id": "I_kwDOAAlq-s5__hvn", - "number": 1798, - "title": "Maven central moving to new publishing model and plugin", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1926/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1926/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1926/events", + "html_url": "https://github.com/hub4j/github-api/issues/1926", + "id": 2516758945, + "node_id": "I_kwDOAAlq-s6WArGh", + "number": 1926, + "title": "Getting timeout while connecting to Github API", "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "login": "Mohazinkhan", + "id": 97169593, + "node_id": "U_kgDOBcqwuQ", + "avatar_url": "https://avatars.githubusercontent.com/u/97169593?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "url": "https://api.github.com/users/Mohazinkhan", + "html_url": "https://github.com/Mohazinkhan", + "followers_url": "https://api.github.com/users/Mohazinkhan/followers", + "following_url": "https://api.github.com/users/Mohazinkhan/following{/other_user}", + "gists_url": "https://api.github.com/users/Mohazinkhan/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Mohazinkhan/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Mohazinkhan/subscriptions", + "organizations_url": "https://api.github.com/users/Mohazinkhan/orgs", + "repos_url": "https://api.github.com/users/Mohazinkhan/repos", + "events_url": "https://api.github.com/users/Mohazinkhan/events{/privacy}", + "received_events_url": "https://api.github.com/users/Mohazinkhan/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", + "id": 1686290078, + "node_id": "MDU6TGFiZWwxNjg2MjkwMDc4", + "url": "https://api.github.com/repos/hub4j/github-api/labels/external", + "name": "external", + "color": "a0a0a0", "default": false, "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 2, - "created_at": "2024-02-21T17:52:31Z", - "updated_at": "2025-03-23T06:52:23Z", - "closed_at": null, - "author_association": "MEMBER", + "comments": 14, + "created_at": "2024-09-10T15:16:24Z", + "updated_at": "2025-03-23T07:23:44Z", + "closed_at": "2025-03-23T07:23:42Z", + "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -2070,9 +1924,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "It looks like Sonatype is moving to a new model for publishing: \r\nhttps://github.com/sonatype/nexus-public/issues/110#issuecomment-1900500381\r\n\r\nThe project may need to re-register or do some other updates to work in the new system:\r\nhttps://central.sonatype.org/register/central-portal/\r\nhttps://central.sonatype.org/publish/publish-portal-maven/\r\n\r\nIt is still in preview, so this is not urgent. I've started work on this but don't have time to finish it now: \r\nhttps://github.com/hub4j/github-api/tree/feature/new-maven-central-publishing", + "body": "I have configured a Github App for Jenkins and I am running a Global seed job which would connect to the Github API and retrieve all the repositories in the Organization. Whenever it tries to authenticate to the Github API and retrieve the list of repositories it fails with timeout and the following error is displayed,\r\n```\r\nCaused: org.kohsuke.github.HttpException: Server returned HTTP response code: -1, message: 'null' for URL: [https://api.github.com/orgs/{orgname}]\r\n\r\nStacktrace: \r\n\r\nhudson.remoting.ProxyException: java.net.SocketTimeoutException: Connect timed out\r\n\tat java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:551)\r\n\tat java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:602)\r\n\tat java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)\r\n\tat java.base/java.net.Socket.connect(Socket.java:633)\r\n\tat java.base/sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:304)\r\n\tat java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:178)\r\n\tat java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:533)\r\n\tat java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:638)\r\n\tat java.base/sun.net.www.protocol.https.HttpsClient.(HttpsClient.java:266)\r\n\tat java.base/sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:380)\r\n\tat java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:193)\r\n\tat java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1241)\r\n\tat java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1127)\r\n\tat java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:179)\r\n\tat java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1686)\r\n\tat java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1610)\r\n\tat java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:529)\r\n\tat java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:308)\r\n\tat org.kohsuke.github.GitHubHttpUrlConnectionClient.getResponseInfo(GitHubHttpUrlConnectionClient.java:69)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:400)\r\nAlso: hudson.remoting.ProxyException: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: fa952780-e9a2-4351-b74d-d3851ac026e3\r\nCaused: hudson.remoting.ProxyException: org.kohsuke.github.HttpException: Server returned HTTP response code: -1, message: 'null' for URL: https://api.github.com/orgs/\r\n\tat org.kohsuke.github.GitHubClient.interpretApiError(GitHubClient.java:500)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:420)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:363)\r\n\tat org.kohsuke.github.Requester.fetch(Requester.java:74)\r\n\tat org.kohsuke.github.GitHub.getOrganization(GitHub.java:505)\r\n\tat org.kohsuke.github.GitHub$getOrganization.call(Unknown Source)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)\r\n\tat com..jenkins.jobdsl.GithubFetcher.(GithubFetcher.groovy:19)\r\n\tat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\r\n\tat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)\r\n\tat java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\r\n\tat java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)\r\n\tat java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)\r\n\tat org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83)\r\n\tat org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:77)\r\n\tat org.codehaus.groovy.runtime.callsite.ConstructorSite.callConstructor(ConstructorSite.java:45)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:238)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:258)\r\n\tat uc_generator.generateUcRepos(uc_generator.groovy:38)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\r\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)\r\n\tat org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)\r\n\tat org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:161)\r\n\tat uc_generator.run(uc_generator.groovy:8)\r\n\tat uc_generator$run.call(Unknown Source)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)\r\n\tat uc_generator$run.call(Unknown Source)\r\n\tat PluginClassLoader for job-dsl//javaposse.jobdsl.dsl.AbstractDslScriptLoader.runScript(AbstractDslScriptLoader.groovy:138)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\r\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)\r\n\tat org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)\r\n\tat org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)\r\n\tat org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:64)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:169)\r\n\tat PluginClassLoader for job-dsl//javaposse.jobdsl.dsl.AbstractDslScriptLoader.runScriptEngine(AbstractDslScriptLoader.groovy:108)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\r\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)\r\n\tat org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)\r\n\tat groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)\r\n\tat org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:352)\r\n\tat groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)\r\n\tat org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:68)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:177)\r\n\tat PluginClassLoader for job-dsl//javaposse.jobdsl.dsl.AbstractDslScriptLoader$_runScripts_closure1.doCall(AbstractDslScriptLoader.groovy:61)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\r\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)\r\n\tat org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)\r\n\tat groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)\r\n\tat org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)\r\n\tat groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)\r\n\tat groovy.lang.Closure.call(Closure.java:420)\r\n\tat groovy.lang.Closure.call(Closure.java:436)\r\n\tat org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2125)\r\n\tat org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2110)\r\n\tat org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2163)\r\n\tat org.codehaus.groovy.runtime.dgm$165.invoke(Unknown Source)\r\n\tat org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:274)\r\n\tat org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)\r\n\tat PluginClassLoader for job-dsl//javaposse.jobdsl.dsl.AbstractDslScriptLoader.runScripts(AbstractDslScriptLoader.groovy:46)\r\n\tat PluginClassLoader for job-dsl//javaposse.jobdsl.plugin.ExecuteDslScripts.perform(ExecuteDslScripts.java:363)\r\n\tat jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123)\r\n\tat PluginClassLoader for workflow-basic-steps//org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:101)\r\n\tat PluginClassLoader for workflow-basic-steps//org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:71)\r\n\tat PluginClassLoader for workflow-step-api//org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)\r\n\tat java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)\r\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)\r\n\tat java.base/java.lang.Thread.run(Thread.java:840)\r\n```", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1798/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1926/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -2083,64 +1937,64 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1926/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "not_planned", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/521", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1924", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/521/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/521/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/521/events", - "html_url": "https://github.com/hub4j/github-api/issues/521", - "id": 447748493, - "node_id": "MDU6SXNzdWU0NDc3NDg0OTM=", - "number": 521, - "title": "GitHub v4 GraphQL API support", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1924/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1924/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1924/events", + "html_url": "https://github.com/hub4j/github-api/issues/1924", + "id": 2514785107, + "node_id": "I_kwDOAAlq-s6V5JNT", + "number": 1924, + "title": "[Vulnerable dependency upgrade] commons-io", "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "login": "dev-2-controltowerai", + "id": 167620350, + "node_id": "U_kgDOCf2u_g", + "avatar_url": "https://avatars.githubusercontent.com/u/167620350?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "url": "https://api.github.com/users/dev-2-controltowerai", + "html_url": "https://github.com/dev-2-controltowerai", + "followers_url": "https://api.github.com/users/dev-2-controltowerai/followers", + "following_url": "https://api.github.com/users/dev-2-controltowerai/following{/other_user}", + "gists_url": "https://api.github.com/users/dev-2-controltowerai/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dev-2-controltowerai/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dev-2-controltowerai/subscriptions", + "organizations_url": "https://api.github.com/users/dev-2-controltowerai/orgs", + "repos_url": "https://api.github.com/users/dev-2-controltowerai/repos", + "events_url": "https://api.github.com/users/dev-2-controltowerai/events{/privacy}", + "received_events_url": "https://api.github.com/users/dev-2-controltowerai/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", "default": false, - "description": "" + "description": "Pull requests that update a dependency file" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 11, - "created_at": "2019-05-23T16:02:20Z", - "updated_at": "2025-03-19T17:33:15Z", - "closed_at": null, - "author_association": "MEMBER", + "comments": 0, + "created_at": "2024-09-09T19:51:06Z", + "updated_at": "2024-09-10T16:02:13Z", + "closed_at": "2024-09-10T16:02:13Z", + "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -2154,9 +2008,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "The v4 API provides a much more customizable API based on GraphQL. It is out of scope for this library to provide a generalized API the fully leverages the power of GraphQL, but having some way to construct queries for trees of items would be useful. \r\n\r\nhttps://developer.github.com/v4/", + "body": "Apache commons io package is outdated with a bunch of vulnerabilities. Can someone update it?", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/521/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1924/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -2167,63 +2021,53 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/521/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1924/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2060", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1915", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/events", - "html_url": "https://github.com/hub4j/github-api/issues/2060", - "id": 2922558598, - "node_id": "I_kwDOAAlq-s6uMrSG", - "number": 2060, - "title": "Issues with getMergeCommitSha", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1915/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1915/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1915/events", + "html_url": "https://github.com/hub4j/github-api/issues/1915", + "id": 2492552073, + "node_id": "I_kwDOAAlq-s6UkVOJ", + "number": 1915, + "title": "Support /repos/{owner}/{repo}/vulnerability-alerts", "user": { - "login": "BradPlayerZero", - "id": 172313252, - "node_id": "U_kgDOCkVKpA", - "avatar_url": "https://avatars.githubusercontent.com/u/172313252?v=4", + "login": "ranma2913", + "id": 4295880, + "node_id": "MDQ6VXNlcjQyOTU4ODA=", + "avatar_url": "https://avatars.githubusercontent.com/u/4295880?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/BradPlayerZero", - "html_url": "https://github.com/BradPlayerZero", - "followers_url": "https://api.github.com/users/BradPlayerZero/followers", - "following_url": "https://api.github.com/users/BradPlayerZero/following{/other_user}", - "gists_url": "https://api.github.com/users/BradPlayerZero/gists{/gist_id}", - "starred_url": "https://api.github.com/users/BradPlayerZero/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/BradPlayerZero/subscriptions", - "organizations_url": "https://api.github.com/users/BradPlayerZero/orgs", - "repos_url": "https://api.github.com/users/BradPlayerZero/repos", - "events_url": "https://api.github.com/users/BradPlayerZero/events{/privacy}", - "received_events_url": "https://api.github.com/users/BradPlayerZero/received_events", + "url": "https://api.github.com/users/ranma2913", + "html_url": "https://github.com/ranma2913", + "followers_url": "https://api.github.com/users/ranma2913/followers", + "following_url": "https://api.github.com/users/ranma2913/following{/other_user}", + "gists_url": "https://api.github.com/users/ranma2913/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ranma2913/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ranma2913/subscriptions", + "organizations_url": "https://api.github.com/users/ranma2913/orgs", + "repos_url": "https://api.github.com/users/ranma2913/repos", + "events_url": "https://api.github.com/users/ranma2913/events{/privacy}", + "received_events_url": "https://api.github.com/users/ranma2913/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 1, - "created_at": "2025-03-15T21:26:52Z", - "updated_at": "2025-03-18T21:06:41Z", - "closed_at": null, + "comments": 0, + "created_at": "2024-08-28T16:35:38Z", + "updated_at": "2024-09-03T20:31:59Z", + "closed_at": "2024-09-03T20:31:59Z", "author_association": "NONE", "type": null, "active_lock_reason": null, @@ -2238,9 +2082,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "Two fixes needed for getMergeCommitSha:\n\n /**\n * See GitHub blog post\n *\n * @return the merge commit sha\n * @throws IOException\n * the io exception\n */\n public String getMergeCommitSha() throws IOException {\n populate();\n return merge_commit_sha;\n }\n\nFirst, GitHub has reversed themselves on deprecating merge_commit_id, so the comment should be removed.\n\nSecond, merge_commit_id is part of the list pull request API (get /repos/{owner}/{repo}/pulls), and required, so it should not call populate().\n\n\n", + "body": "Support Endpoints:\r\n\r\n- https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#check-if-vulnerability-alerts-are-enabled-for-a-repository\r\n- https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#enable-vulnerability-alerts\r\n- https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#disable-vulnerability-alerts", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2060/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1915/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -2251,39 +2095,39 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1915/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2061", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1909", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/events", - "html_url": "https://github.com/hub4j/github-api/issues/2061", - "id": 2923132207, - "node_id": "I_kwDOAAlq-s6uO3Uv", - "number": 2061, - "title": "`GHIssue#isPullRequest` is false despite being a PR", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1909/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1909/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1909/events", + "html_url": "https://github.com/hub4j/github-api/issues/1909", + "id": 2472357939, + "node_id": "I_kwDOAAlq-s6TXTAz", + "number": 1909, + "title": "AbuseLimitHandler does not handle scenarios where the local time is not synchronized with GitHub server time", "user": { - "login": "Haarolean", - "id": 1494347, - "node_id": "MDQ6VXNlcjE0OTQzNDc=", - "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/Haarolean", - "html_url": "https://github.com/Haarolean", - "followers_url": "https://api.github.com/users/Haarolean/followers", - "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", - "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", - "organizations_url": "https://api.github.com/users/Haarolean/orgs", - "repos_url": "https://api.github.com/users/Haarolean/repos", - "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", - "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", "type": "User", "user_view_type": "public", "site_admin": false @@ -2299,16 +2143,16 @@ "description": null } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-03-16T15:23:51Z", - "updated_at": "2025-03-17T10:37:01Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", + "comments": 2, + "created_at": "2024-08-19T03:08:21Z", + "updated_at": "2024-10-14T17:19:05Z", + "closed_at": "2024-10-14T17:19:04Z", + "author_association": "MEMBER", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -2322,9 +2166,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Describe the bug**\n`isPullRequest` in GHIssue returns false due to `pull_request == null` condition. The PR object was acquired via `payload.getPullRequest()` method of `GHEventPayload.PullRequest` class.\n\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Get an instance of `GHEventPayload.PullRequest` event\n2. Get the pr entity via `payload.getPullRequest()`\n3. Observe that despite object being an instance of `GHPullRequest` the return value of `isPullRequest` method is false.\n\n**Expected behavior**\nexpected true", + "body": "From [this comment](https://github.com/hub4j/github-api/pull/1895/files#r1704397808) on #1895 : \r\n\r\n> GitHubClient has a method to get Date (or Instant).\r\n> https://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GitHubClient.java#L916\r\n> \r\n> Unfortunately, diff from local machine time is not reliable. The local machine may not be synchronized with the server time. We have to use the diff from the response time.\r\n> https://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GHRateLimit.java#L543-L571\r\n\r\n> However, this PR is a huge step forward and I'd rather have this less than perfect code added than wait for the next release.\r\n\r\nThis is the code that need updating:\r\n\r\nhttps://github.com/hub4j/github-api/blob/314917eabf9762e0d62d52f3ae68bc9ff6ba7ed5/src/main/java/org/kohsuke/github/AbuseLimitHandler.java#L116-L122", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2061/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1909/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -2335,63 +2179,63 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1909/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2062", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1908", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/events", - "html_url": "https://github.com/hub4j/github-api/issues/2062", - "id": 2923159729, - "node_id": "I_kwDOAAlq-s6uO-Cx", - "number": 2062, - "title": "`branch.getProtection()` fails with an exception for ruleset-protected branch", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1908/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1908/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1908/events", + "html_url": "https://github.com/hub4j/github-api/issues/1908", + "id": 2467567361, + "node_id": "I_kwDOAAlq-s6TFBcB", + "number": 1908, + "title": "Enable github-api to support GraalVM native images", "user": { - "login": "Haarolean", - "id": 1494347, - "node_id": "MDQ6VXNlcjE0OTQzNDc=", - "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "login": "klopfdreh", + "id": 980773, + "node_id": "MDQ6VXNlcjk4MDc3Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/980773?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/Haarolean", - "html_url": "https://github.com/Haarolean", - "followers_url": "https://api.github.com/users/Haarolean/followers", - "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", - "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", - "organizations_url": "https://api.github.com/users/Haarolean/orgs", - "repos_url": "https://api.github.com/users/Haarolean/repos", - "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", - "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "url": "https://api.github.com/users/klopfdreh", + "html_url": "https://github.com/klopfdreh", + "followers_url": "https://api.github.com/users/klopfdreh/followers", + "following_url": "https://api.github.com/users/klopfdreh/following{/other_user}", + "gists_url": "https://api.github.com/users/klopfdreh/gists{/gist_id}", + "starred_url": "https://api.github.com/users/klopfdreh/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/klopfdreh/subscriptions", + "organizations_url": "https://api.github.com/users/klopfdreh/orgs", + "repos_url": "https://api.github.com/users/klopfdreh/repos", + "events_url": "https://api.github.com/users/klopfdreh/events{/privacy}", + "received_events_url": "https://api.github.com/users/klopfdreh/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-03-16T16:11:09Z", - "updated_at": "2025-03-17T10:34:17Z", - "closed_at": null, + "comments": 18, + "created_at": "2024-08-15T07:31:23Z", + "updated_at": "2024-09-05T16:24:05Z", + "closed_at": "2024-09-05T16:24:05Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, @@ -2406,9 +2250,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Describe the bug**\nIf a branch (`GHBranch`) is protected via rulesets rather than classic (deprecated?) branch protection rules, `GHBranch#isProtected()` returns `true`, but `GHBranch#getProtection` desintegrates with the following exception:\n```\norg.kohsuke.github.GHFileNotFoundException: https://api.github.com/repos/ZooPets/kapybro-demo-dev/branches/main/protection {\"message\":\"Branch not protected\",\"documentation_url\":\"https://docs.github.com/rest/branches/branch-protection#get-branch-protection\",\"status\":\"404\"}\n\tat org.kohsuke.github.GitHubClient.interpretApiError(GitHubClient.java:661) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:480) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:427) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.Requester.fetch(Requester.java:85) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GHBranch.getProtection(GHBranch.java:112) ~[github-api-unbridged-1.318.jar:na]\n//omitted\nCaused by: java.io.FileNotFoundException: https://api.github.com/repos/ZooPets/kapybro-demo-dev/branches/main/protection\n\tat org.kohsuke.github.GitHubConnectorResponseErrorHandler$1.onError(GitHubConnectorResponseErrorHandler.java:60) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.detectKnownErrors(GitHubClient.java:504) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:464) ~[github-api-unbridged-1.318.jar:na]\n\t... 179 common frames omitted\n```\n\nMost likely, `GHBranch#isProtected()` will be true for both protection methods, so we need a way to tell them apart without conflating two different methods and later calling wrong endpoints.\nPerhaps a temp solution could be introduced until #1811 is implemented.", + "body": "**Describe the bug**\r\nDue to some reflections you encounter errors during the runtime when `github-api` is used in a native image.\r\n\r\nExample\r\n```plain\r\nat java.base@22.0.1/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)\\nCaused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `org.kohsuke.github.GHRepository`: cannot deserialize from Object value (no delegate- or property-based Creator): this appears to be a native image, in which case you may need to configure reflection for the class that is to be deserialized\\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 2]\r\n```\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Build an application with Spring Boot Native and `github-api`\r\n2. Perform a `native-image` build\r\n3. Run the native application\r\n\r\n**Expected behavior**\r\n`github-api` should be used in a native image without any issues\r\n\r\n**Desktop (please complete the following information):**\r\n N/A\r\n\r\n**Additional context**\r\nYou could add `META-INF/native-image///reflect-config.json` and describe the reflection usage:\r\n\r\nExample:\r\n```json\r\n[\r\n {\r\n \"name\": \"org.kohsuke.github.GHRepository\",\r\n \r\n }\r\n]\r\n```\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2062/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1908/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -2419,39 +2263,39 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1908/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1811", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1905", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/events", - "html_url": "https://github.com/hub4j/github-api/issues/1811", - "id": 2177274983, - "node_id": "I_kwDOAAlq-s6BxpRn", - "number": 1811, - "title": "Implement API for retrieving and managing rulesets on a repository", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1905/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1905/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1905/events", + "html_url": "https://github.com/hub4j/github-api/issues/1905", + "id": 2449641453, + "node_id": "I_kwDOAAlq-s6SAo_t", + "number": 1905, + "title": "List Anonymous Repository Contributors", "user": { - "login": "FHannes", - "id": 915760, - "node_id": "MDQ6VXNlcjkxNTc2MA==", - "avatar_url": "https://avatars.githubusercontent.com/u/915760?v=4", + "login": "augustd", + "id": 1258191, + "node_id": "MDQ6VXNlcjEyNTgxOTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/1258191?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/FHannes", - "html_url": "https://github.com/FHannes", - "followers_url": "https://api.github.com/users/FHannes/followers", - "following_url": "https://api.github.com/users/FHannes/following{/other_user}", - "gists_url": "https://api.github.com/users/FHannes/gists{/gist_id}", - "starred_url": "https://api.github.com/users/FHannes/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/FHannes/subscriptions", - "organizations_url": "https://api.github.com/users/FHannes/orgs", - "repos_url": "https://api.github.com/users/FHannes/repos", - "events_url": "https://api.github.com/users/FHannes/events{/privacy}", - "received_events_url": "https://api.github.com/users/FHannes/received_events", + "url": "https://api.github.com/users/augustd", + "html_url": "https://github.com/augustd", + "followers_url": "https://api.github.com/users/augustd/followers", + "following_url": "https://api.github.com/users/augustd/following{/other_user}", + "gists_url": "https://api.github.com/users/augustd/gists{/gist_id}", + "starred_url": "https://api.github.com/users/augustd/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/augustd/subscriptions", + "organizations_url": "https://api.github.com/users/augustd/orgs", + "repos_url": "https://api.github.com/users/augustd/repos", + "events_url": "https://api.github.com/users/augustd/events{/privacy}", + "received_events_url": "https://api.github.com/users/augustd/received_events", "type": "User", "user_view_type": "public", "site_admin": false @@ -2467,16 +2311,16 @@ "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 3, - "created_at": "2024-03-09T15:42:36Z", - "updated_at": "2025-03-16T16:04:55Z", - "closed_at": null, - "author_association": "NONE", + "comments": 2, + "created_at": "2024-08-05T23:31:16Z", + "updated_at": "2025-01-06T17:08:10Z", + "closed_at": "2025-01-06T17:08:10Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -2490,11 +2334,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "As far as I can tell, the library currently supports managing branch protection, but not [rulesets](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets). The use of rulesets has some advantages over using branch protection [as listed in the documentation](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets#about-rulesets-protected-branches-and-protected-tags), so it might be useful to add support for them.\r\nAPI reference: https://docs.github.com/en/rest/repos/rules?apiVersion=2022-11-28", + "body": "The Github API docs (https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#list-repository-contributors) say that there is am `anon=true` parameter to add to `/repos/{owner}/{repo}/contributors` in order to fetch anonymous contributions. \r\n\r\nThere does not seem to be an option in the API to add that parameter. Is there any way to fetch anonymous contributors? ", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1811/reactions", - "total_count": 1, - "+1": 1, + "url": "https://api.github.com/repos/hub4j/github-api/issues/1905/reactions", + "total_count": 0, + "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, @@ -2503,64 +2347,54 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1905/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2028", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1852", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/events", - "html_url": "https://github.com/hub4j/github-api/issues/2028", - "id": 2843436852, - "node_id": "I_kwDOAAlq-s6pe2c0", - "number": 2028, - "title": "GHMilestone throws NPE on null state", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1852/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1852/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1852/events", + "html_url": "https://github.com/hub4j/github-api/issues/1852", + "id": 2344425004, + "node_id": "I_kwDOAAlq-s6LvRYs", + "number": 1852, + "title": "Can't Iterate over ghRepo.listCollaborators()", "user": { - "login": "rnveach", - "id": 5427943, - "node_id": "MDQ6VXNlcjU0Mjc5NDM=", - "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", + "login": "MouadhKh", + "id": 50799773, + "node_id": "MDQ6VXNlcjUwNzk5Nzcz", + "avatar_url": "https://avatars.githubusercontent.com/u/50799773?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/rnveach", - "html_url": "https://github.com/rnveach", - "followers_url": "https://api.github.com/users/rnveach/followers", - "following_url": "https://api.github.com/users/rnveach/following{/other_user}", - "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", - "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", - "organizations_url": "https://api.github.com/users/rnveach/orgs", - "repos_url": "https://api.github.com/users/rnveach/repos", - "events_url": "https://api.github.com/users/rnveach/events{/privacy}", - "received_events_url": "https://api.github.com/users/rnveach/received_events", + "url": "https://api.github.com/users/MouadhKh", + "html_url": "https://github.com/MouadhKh", + "followers_url": "https://api.github.com/users/MouadhKh/followers", + "following_url": "https://api.github.com/users/MouadhKh/following{/other_user}", + "gists_url": "https://api.github.com/users/MouadhKh/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MouadhKh/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MouadhKh/subscriptions", + "organizations_url": "https://api.github.com/users/MouadhKh/orgs", + "repos_url": "https://api.github.com/users/MouadhKh/repos", + "events_url": "https://api.github.com/users/MouadhKh/events{/privacy}", + "received_events_url": "https://api.github.com/users/MouadhKh/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 6, - "created_at": "2025-02-10T19:35:34Z", - "updated_at": "2025-02-27T18:05:14Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", + "comments": 0, + "created_at": "2024-06-10T17:06:18Z", + "updated_at": "2024-06-11T19:17:11Z", + "closed_at": "2024-06-11T19:16:21Z", + "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -2574,11 +2408,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "The following method is not `null` safe:\nhttps://github.com/hub4j/github-api/blob/055638069ce8299629225be7f39395b16d4fe839/src/main/java/org/kohsuke/github/GHMilestone.java#L137-L138\n\nWhenever it is called to get the state of the milestone, and it (`state` field) is `null`, it will throw a `NullPointerException`.\n\nThere is no other method in this class to ascertain the value of this before calling the method. The field is private. Programmers are forced to wrap this in a try/catch in the case it is null.\n\nIt would ease handling this call if it had a `null` check and returned `null` if there is no state.", + "body": "**Description**\r\nAccessing single collaborators by iterating over `ghRepo.listCollaborators()` is not possible for some repositories (all public)\r\nThe detailed message looks : \r\n`Server returned HTTP response code: -1, message: 'null' for URL: www.reposUrl.com`\r\n\r\n**To Reproduce**\r\nIt doesn't matter which token I use ( classic token with all permissions/Fine-grained token with all permissions). For some repositories, it is not possible to go over the collaborators.\r\nThe result of the following curl varies depending on the used token(classic/new)\r\n`curl -L \\\r\n -H \"Accept: application/vnd.github+json\" \\\r\n -H \"Authorization: Bearer TOKEN_PLACEHOLDER\" \\\r\n -H \"X-GitHub-Api-Version: 2022-11-28\" \\\r\n URL`\r\n\r\n**Classic PAT** --> Must have push access to view repository collaborators.\r\n**Fine grained token** --> Resource not accessible by personal access token\r\n\r\nThe first displayed error message allude to missing permissions, which I think is wrong since the repository is publicly accessible\r\nThe second error message is more confusing and contradicts the documentation(https://docs.github.com/rest/collaborators/collaborators#list-repository-collaborators)\r\n\r\n**Expected behavior**\r\nCan access collaborators of all public repositories \r\n\r\n**Additional context**\r\nThe given repository is a special case because it is archived(should be readable nevertheless). But this problem persists with other non-archived repositories aswell", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2028/reactions", - "total_count": 1, - "+1": 1, + "url": "https://api.github.com/repos/hub4j/github-api/issues/1852/reactions", + "total_count": 0, + "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, @@ -2587,9 +2421,9 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1852/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 } ] diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/3-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/3-search_issues.json index 70588b20a1..74d8e9279d 100644 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/3-search_issues.json +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/3-search_issues.json @@ -1,68 +1,49 @@ { - "total_count": 164, + "total_count": 553, "incomplete_results": false, "items": [ { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2181", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2150", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/events", - "html_url": "https://github.com/hub4j/github-api/issues/2181", - "id": 3843541321, - "node_id": "I_kwDOAAlq-s7lF8lJ", - "number": 2181, - "title": "[Feature request] Expose Co-Authored-By Metadata in Commit API", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2150/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2150/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2150/events", + "html_url": "https://github.com/hub4j/github-api/issues/2150", + "id": 3495762524, + "node_id": "I_kwDOAAlq-s7QXRpc", + "number": 2150, + "title": "Add new DYNAMIC event to GHEvent enum", "user": { - "login": "yeikel", - "id": 8935151, - "node_id": "MDQ6VXNlcjg5MzUxNTE=", - "avatar_url": "https://avatars.githubusercontent.com/u/8935151?v=4", + "login": "kkroner8451", + "id": 14809736, + "node_id": "MDQ6VXNlcjE0ODA5NzM2", + "avatar_url": "https://avatars.githubusercontent.com/u/14809736?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/yeikel", - "html_url": "https://github.com/yeikel", - "followers_url": "https://api.github.com/users/yeikel/followers", - "following_url": "https://api.github.com/users/yeikel/following{/other_user}", - "gists_url": "https://api.github.com/users/yeikel/gists{/gist_id}", - "starred_url": "https://api.github.com/users/yeikel/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/yeikel/subscriptions", - "organizations_url": "https://api.github.com/users/yeikel/orgs", - "repos_url": "https://api.github.com/users/yeikel/repos", - "events_url": "https://api.github.com/users/yeikel/events{/privacy}", - "received_events_url": "https://api.github.com/users/yeikel/received_events", + "url": "https://api.github.com/users/kkroner8451", + "html_url": "https://github.com/kkroner8451", + "followers_url": "https://api.github.com/users/kkroner8451/followers", + "following_url": "https://api.github.com/users/kkroner8451/following{/other_user}", + "gists_url": "https://api.github.com/users/kkroner8451/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kkroner8451/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kkroner8451/subscriptions", + "organizations_url": "https://api.github.com/users/kkroner8451/orgs", + "repos_url": "https://api.github.com/users/kkroner8451/repos", + "events_url": "https://api.github.com/users/kkroner8451/events{/privacy}", + "received_events_url": "https://api.github.com/users/kkroner8451/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - }, - { - "id": 1686292366, - "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", - "name": "more information needed", - "color": "9ce1ed", - "default": false, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 1, - "created_at": "2026-01-22T15:48:48Z", - "updated_at": "2026-01-24T21:57:18Z", - "closed_at": null, + "comments": 0, + "created_at": "2025-10-08T14:45:59Z", + "updated_at": "2025-10-23T00:51:33Z", + "closed_at": "2025-10-23T00:51:33Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, @@ -77,9 +58,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Use Case:** \n\nIdentify all contributors to a commit, including those listed as `Co-Authored-By` in the commit message footer. Currently, the API exposes only the main author and committer, but not co-authors.\n\n```java\n var userEmail = commit.getAuthor().getEmail();\n var commiterEmail = commit.getCommitter().getEmail();\n // How to get the co-author with this API? \n```\n\n**Proposed Solution:** \n- Add a method to `GHCommit` (or similar) that returns a list of co-authors parsed from the commit message.\n- Optionally, provide a structured representation (e.g., name and email) for each co-author.\n\n**Example API:**\n```java\nList getCoAuthors();\n```\n\n\n**References:** \n\nhttps://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors#creating-co-authored-commits-on-the-command-line\n\n**Note to maintainers:** \n\nApologies if this is currently possible, please share any snippet if you can. Thank you in advance! ", + "body": "GitHub now has a new event of \"dynamic\" on workflow runs. I can't find any published docs, but looking at the data it appears to be dynamic runs of workflows for things like Dependabot, etc. The results is when `GHWorkflowRun` maps `event` field in `getEvent()` method to the `GHEvent` enum it ends up being UNKNOWN and logs a warning in the `EnumUtils` class that the value is unknown. DYNAMIC should be added to the GHEvent enum to minimize log warnings and add clarity for known (even if not published) possible values.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2181/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2150/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -90,53 +71,53 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2181/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2150/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2166", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2144", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/events", - "html_url": "https://github.com/hub4j/github-api/issues/2166", - "id": 3668649747, - "node_id": "I_kwDOAAlq-s7aqycT", - "number": 2166, - "title": "Compatibility issue with Jackson 2.20 and above", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2144/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2144/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2144/events", + "html_url": "https://github.com/hub4j/github-api/issues/2144", + "id": 3450064053, + "node_id": "I_kwDOAAlq-s7No8y1", + "number": 2144, + "title": "Unbridged Artifact for 1.330", "user": { - "login": "yeikel", - "id": 8935151, - "node_id": "MDQ6VXNlcjg5MzUxNTE=", - "avatar_url": "https://avatars.githubusercontent.com/u/8935151?v=4", + "login": "gilday", + "id": 1431609, + "node_id": "MDQ6VXNlcjE0MzE2MDk=", + "avatar_url": "https://avatars.githubusercontent.com/u/1431609?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/yeikel", - "html_url": "https://github.com/yeikel", - "followers_url": "https://api.github.com/users/yeikel/followers", - "following_url": "https://api.github.com/users/yeikel/following{/other_user}", - "gists_url": "https://api.github.com/users/yeikel/gists{/gist_id}", - "starred_url": "https://api.github.com/users/yeikel/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/yeikel/subscriptions", - "organizations_url": "https://api.github.com/users/yeikel/orgs", - "repos_url": "https://api.github.com/users/yeikel/repos", - "events_url": "https://api.github.com/users/yeikel/events{/privacy}", - "received_events_url": "https://api.github.com/users/yeikel/received_events", + "url": "https://api.github.com/users/gilday", + "html_url": "https://github.com/gilday", + "followers_url": "https://api.github.com/users/gilday/followers", + "following_url": "https://api.github.com/users/gilday/following{/other_user}", + "gists_url": "https://api.github.com/users/gilday/gists{/gist_id}", + "starred_url": "https://api.github.com/users/gilday/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/gilday/subscriptions", + "organizations_url": "https://api.github.com/users/gilday/orgs", + "repos_url": "https://api.github.com/users/gilday/repos", + "events_url": "https://api.github.com/users/gilday/events{/privacy}", + "received_events_url": "https://api.github.com/users/gilday/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 3, - "created_at": "2025-11-26T18:38:53Z", - "updated_at": "2026-01-15T04:18:43Z", - "closed_at": null, + "comments": 1, + "created_at": "2025-09-24T16:05:57Z", + "updated_at": "2025-10-23T17:46:14Z", + "closed_at": "2025-10-23T17:46:14Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, @@ -151,11 +132,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Describe the bug**\n\nI am trying to use the project along with Jackson 2.20.1 but it fails at runtime with the following issue while creating the mapper \n\n```\nException in thread \"main\" java.lang.NoSuchFieldError: Class com.fasterxml.jackson.databind.PropertyNamingStrategy does not have member field 'com.fasterxml.jackson.databind.PropertyNamingStrategy SNAKE_CASE'\n\tat org.kohsuke.github.GitHubClient.(GitHubClient.java:98)\n```\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Configure a project and add Jackson 2.20.1 to the classpath\n2. Try to create a new client\n\n\n**Expected behavior**\n\nThe client is created \n\n**Actual behavior**\n\nIt fails because it cannot find `PropertyNamingStrategy SNAKE_CASE` which no longer exists\n\n**Desktop (please complete the following information):**\n\n - Version: 2.0-rc.5\n\n**Additional context**\n\nUsage: https://github.com/hub4j/github-api/blob/9e09d67fbb35808abc0782e7d0cbf4b6e64a94de/src/main/java/org/kohsuke/github/GitHubClient.java#L124\n\nThis feature was dropped in Jackson 2.20. Using Jackson 2.19.4 works for now but it is not a long term solution\n\nSee https://github.com/FasterXML/jackson-databind/commit/4d2083160fef06e6063a3082f0fdaab8c2803793\n", + "body": "Could you please release the `github-api-unbridged` artifact for version 1.330? This would allow projects using Mockito in their test suites to upgrade to the Jackson-compatible version while maintaining test functionality.\n\n## Current Situation\n- ✅ github-api:1.330 (bridged) - Released and available\n- ❌ github-api-unbridged:1.330 - Not yet released\n- 🔧 Tests fail with the bridged version due to Mockito incompatibilities\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2166/reactions", - "total_count": 3, - "+1": 3, + "url": "https://api.github.com/repos/hub4j/github-api/issues/2144/reactions", + "total_count": 0, + "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, @@ -164,81 +145,53 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2166/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2144/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2172", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2140", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/events", - "html_url": "https://github.com/hub4j/github-api/issues/2172", - "id": 3695344435, - "node_id": "I_kwDOAAlq-s7cQnsz", - "number": 2172, - "title": "GitHubSanityCachedValue can block whole application", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2140/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2140/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2140/events", + "html_url": "https://github.com/hub4j/github-api/issues/2140", + "id": 3379331716, + "node_id": "I_kwDOAAlq-s7JbIKE", + "number": 2140, + "title": "NoClassDefFoundError when using Jackson 2.20", "user": { - "login": "alexec", - "id": 1142830, - "node_id": "MDQ6VXNlcjExNDI4MzA=", - "avatar_url": "https://avatars.githubusercontent.com/u/1142830?v=4", + "login": "sfc-gh-pvillard", + "id": 189795559, + "node_id": "U_kgDOC1AM5w", + "avatar_url": "https://avatars.githubusercontent.com/u/189795559?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/alexec", - "html_url": "https://github.com/alexec", - "followers_url": "https://api.github.com/users/alexec/followers", - "following_url": "https://api.github.com/users/alexec/following{/other_user}", - "gists_url": "https://api.github.com/users/alexec/gists{/gist_id}", - "starred_url": "https://api.github.com/users/alexec/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/alexec/subscriptions", - "organizations_url": "https://api.github.com/users/alexec/orgs", - "repos_url": "https://api.github.com/users/alexec/repos", - "events_url": "https://api.github.com/users/alexec/events{/privacy}", - "received_events_url": "https://api.github.com/users/alexec/received_events", + "url": "https://api.github.com/users/sfc-gh-pvillard", + "html_url": "https://github.com/sfc-gh-pvillard", + "followers_url": "https://api.github.com/users/sfc-gh-pvillard/followers", + "following_url": "https://api.github.com/users/sfc-gh-pvillard/following{/other_user}", + "gists_url": "https://api.github.com/users/sfc-gh-pvillard/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sfc-gh-pvillard/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sfc-gh-pvillard/subscriptions", + "organizations_url": "https://api.github.com/users/sfc-gh-pvillard/orgs", + "repos_url": "https://api.github.com/users/sfc-gh-pvillard/repos", + "events_url": "https://api.github.com/users/sfc-gh-pvillard/events{/privacy}", + "received_events_url": "https://api.github.com/users/sfc-gh-pvillard/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 2, - "created_at": "2025-12-04T16:12:07Z", - "updated_at": "2025-12-16T15:38:13Z", - "closed_at": null, + "comments": 3, + "created_at": "2025-09-03T10:45:15Z", + "updated_at": "2025-09-04T17:48:24Z", + "closed_at": "2025-09-03T13:08:25Z", "author_association": "NONE", "type": null, "active_lock_reason": null, @@ -253,9 +206,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "\nThe `GitHubSanityCachedValue` class contains a single shared lock. This means that client to this class can be blocked by another user of the function. \n\nInstead, it might be better to use a read/write lock.\n\n\nhttps://github.com/hub4j/github-api/blob/9e09d67fbb35808abc0782e7d0cbf4b6e64a94de/src/main/java/org/kohsuke/github/GitHubSanityCachedValue.java#L11 ", + "body": "````java\njava.lang.NoClassDefFoundError: Could not initialize class org.kohsuke.github.GitHubClient\n at org.kohsuke.github.GitHub.(GitHub.java:137)\n at org.kohsuke.github.GitHubBuilder.build(GitHubBuilder.java:509)\n at ...\nCaused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoSuchFieldError: Class com.fasterxml.jackson.databind.PropertyNamingStrategy does not have member field 'com.fasterxml.jackson.databind.PropertyNamingStrategy SNAKE_CASE' [in thread \"ForkJoinPool-1-worker-2\"]\n at org.kohsuke.github.GitHubClient.(GitHubClient.java:92)\n ... 15 common frames omitted\n````\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2172/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2140/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -266,72 +219,63 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2172/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2140/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2010", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2137", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/events", - "html_url": "https://github.com/hub4j/github-api/issues/2010", - "id": 2792856326, - "node_id": "I_kwDOAAlq-s6md5sG", - "number": 2010, - "title": "Support new issue types", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2137/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2137/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2137/events", + "html_url": "https://github.com/hub4j/github-api/issues/2137", + "id": 3373441552, + "node_id": "I_kwDOAAlq-s7JEqIQ", + "number": 2137, + "title": "Runtime errors when using jackson 2.20.0", "user": { - "login": "Haarolean", - "id": 1494347, - "node_id": "MDQ6VXNlcjE0OTQzNDc=", - "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "login": "ketan", + "id": 10598, + "node_id": "MDQ6VXNlcjEwNTk4", + "avatar_url": "https://avatars.githubusercontent.com/u/10598?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/Haarolean", - "html_url": "https://github.com/Haarolean", - "followers_url": "https://api.github.com/users/Haarolean/followers", - "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", - "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", - "organizations_url": "https://api.github.com/users/Haarolean/orgs", - "repos_url": "https://api.github.com/users/Haarolean/repos", - "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", - "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "url": "https://api.github.com/users/ketan", + "html_url": "https://github.com/ketan", + "followers_url": "https://api.github.com/users/ketan/followers", + "following_url": "https://api.github.com/users/ketan/following{/other_user}", + "gists_url": "https://api.github.com/users/ketan/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ketan/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ketan/subscriptions", + "organizations_url": "https://api.github.com/users/ketan/orgs", + "repos_url": "https://api.github.com/users/ketan/repos", + "events_url": "https://api.github.com/users/ketan/events{/privacy}", + "received_events_url": "https://api.github.com/users/ketan/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 3, - "created_at": "2025-01-16T13:57:43Z", - "updated_at": "2025-11-12T23:19:16Z", - "closed_at": null, + "comments": 0, + "created_at": "2025-09-01T17:51:50Z", + "updated_at": "2025-09-02T19:22:33Z", + "closed_at": "2025-09-02T19:22:33Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, @@ -346,11 +290,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "Github introduced new enhancements to issues: issue types, sub-issues, and other minor issues. It seems like they're forcing these issue types by default now, the field is visible even if you don't want to use it, my guess is it will be a default soon.\nSo it makes sense to implement this kind of API.\n\nhttps://github.blog/changelog/2025-01-13-evolving-github-issues-public-preview/\nWhile it's stated that it's in \"preview\", they've already started rolling it out actively without opting in.", + "body": "**Environment**\n\n* Jackson databind - `2.20.0`\n* org.kohsuke:github-api `1.329`\n\nWhen running with this combination, there's a runtime error when loading GitHubClient. In particular, `PropertyNamingStrategy.SNAKE_CASE` seems to have been removed in jackson databind `2.20.0` as part of https://github.com/FasterXML/jackson-databind/commit/4d2083160fef06e6063a3082f0fdaab8c2803793. https://github.com/FasterXML/jackson-databind/issues/4136 contains the discussion around it.\n\nThe suggestion is to use `PropertyNamingStrategies#SNAKE_CASE` instead.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2010/reactions", - "total_count": 1, - "+1": 1, + "url": "https://api.github.com/repos/hub4j/github-api/issues/2137/reactions", + "total_count": 0, + "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, @@ -359,72 +303,53 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2010/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2137/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2156", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2128", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/events", - "html_url": "https://github.com/hub4j/github-api/issues/2156", - "id": 3574234743, - "node_id": "I_kwDOAAlq-s7VCn53", - "number": 2156, - "title": "Enterprise installations not recognized (throws an Exception)", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2128/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2128/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2128/events", + "html_url": "https://github.com/hub4j/github-api/issues/2128", + "id": 3364033362, + "node_id": "I_kwDOAAlq-s7IgxNS", + "number": 2128, + "title": "GHRepository#getIssues() takes 30s", "user": { - "login": "boriel", - "id": 1433137, - "node_id": "MDQ6VXNlcjE0MzMxMzc=", - "avatar_url": "https://avatars.githubusercontent.com/u/1433137?v=4", + "login": "Alathreon", + "id": 45936420, + "node_id": "MDQ6VXNlcjQ1OTM2NDIw", + "avatar_url": "https://avatars.githubusercontent.com/u/45936420?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/boriel", - "html_url": "https://github.com/boriel", - "followers_url": "https://api.github.com/users/boriel/followers", - "following_url": "https://api.github.com/users/boriel/following{/other_user}", - "gists_url": "https://api.github.com/users/boriel/gists{/gist_id}", - "starred_url": "https://api.github.com/users/boriel/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/boriel/subscriptions", - "organizations_url": "https://api.github.com/users/boriel/orgs", - "repos_url": "https://api.github.com/users/boriel/repos", - "events_url": "https://api.github.com/users/boriel/events{/privacy}", - "received_events_url": "https://api.github.com/users/boriel/received_events", + "url": "https://api.github.com/users/Alathreon", + "html_url": "https://github.com/Alathreon", + "followers_url": "https://api.github.com/users/Alathreon/followers", + "following_url": "https://api.github.com/users/Alathreon/following{/other_user}", + "gists_url": "https://api.github.com/users/Alathreon/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Alathreon/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Alathreon/subscriptions", + "organizations_url": "https://api.github.com/users/Alathreon/orgs", + "repos_url": "https://api.github.com/users/Alathreon/repos", + "events_url": "https://api.github.com/users/Alathreon/events{/privacy}", + "received_events_url": "https://api.github.com/users/Alathreon/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 1, - "created_at": "2025-10-31T10:01:12Z", - "updated_at": "2025-11-12T23:16:45Z", - "closed_at": null, + "created_at": "2025-08-28T16:54:27Z", + "updated_at": "2025-08-30T20:45:46Z", + "closed_at": "2025-08-30T20:45:46Z", "author_association": "NONE", "type": null, "active_lock_reason": null, @@ -439,11 +364,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Description of the bug**\nWhen listing installations for a given App ID, the deserialization of the JSON response fails with the exception:\n```\nhudson.remoting.ProxyException: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `org.kohsuke.github.GHTargetType` from String \"Enterprise\": not one of the values accepted for Enum class: [ORGANIZATION, USER]\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 756] (through reference chain: java.lang.Object[][0]->org.kohsuke.github.GHAppInstallation[\"target_type\"])\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1959)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:1245)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.EnumDeserializer._deserializeAltString(EnumDeserializer.java:447)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.EnumDeserializer._fromString(EnumDeserializer.java:304)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.EnumDeserializer.deserialize(EnumDeserializer.java:273)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:138)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:399)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:218)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2131)\n\tat PluginClassLoader for jackson2-api//com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1566)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubResponse.parseBody(GitHubResponse.java:104)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubPageIterator.lambda$fetch$0(GitHubPageIterator.java:147)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubClient.createResponse(GitHubClient.java:679)\n\tat PluginClassLoader for github-api//org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:466)\nCaused: hudson.remoting.ProxyException: org.kohsuke.github.HttpException: Server returned HTTP response code: 200, message: 'null' for URL: [https://api.github.com/app/installati](https://api.github.com/app/installations)\n ...\n```\n\n**To Reproduce**\nTo reproduce:\n\n 1. Install a GitHub App at the enterprise level (this is a rather new feature)\n 1. do an api call to\n[https://api.github.com/app/installations](https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#list-installations-for-the-authenticated-app)\n \nThe `target_type` field will be `\"Enterprise\"` in one of the installations returned, and the deserialization will fail.\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\nJust return the deserialized content with this new `target_type`\n\n**Desktop (please complete the following information):**\n Does not apply\n\n**Additional context**\nFixing this will require adding the `ENTERPRISE` type to the `GHTargetType` Enum here:\nhttps://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GHTargetType.java#L17", + "body": "**Describe the bug**\nA clear and concise description of what the bug is.\nI am using the method GHRepository#getIssues() to get all issues for auto complete purpose in a discord bot, but the problem is that there are more than 1000 issues and fetching them all takes 28s...\nIt could be partially patched by allowing the client to set a page size to large numbers, so it doesn't need to do a HTTP call 44 times.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n- Have a repository with 1000+ issues\n- Call getIssues() with no filter\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\nIt should take much less time.\n\n**Desktop (please complete the following information):**\n- Version 1.329\n- Tested in many Windows/Linux distributions\n\n**Additional context**\nAdd any other context about the problem here.\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2156/reactions", - "total_count": 1, - "+1": 1, + "url": "https://api.github.com/repos/hub4j/github-api/issues/2128/reactions", + "total_count": 0, + "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, @@ -452,73 +377,54 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2156/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2128/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2155", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2112", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/events", - "html_url": "https://github.com/hub4j/github-api/issues/2155", - "id": 3570367983, - "node_id": "I_kwDOAAlq-s7Uz33v", - "number": 2155, - "title": "[Feature request] Support matching-refs API", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2112/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2112/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2112/events", + "html_url": "https://github.com/hub4j/github-api/issues/2112", + "id": 3218889361, + "node_id": "I_kwDOAAlq-s6_3FqR", + "number": 2112, + "title": "I am using `v2.0-rc.3` and when starting an application I get a load of warnings regarding annotation used in the github-api library.", "user": { - "login": "krzema12", - "id": 3110813, - "node_id": "MDQ6VXNlcjMxMTA4MTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/3110813?v=4", + "login": "HerrDerb", + "id": 7398256, + "node_id": "MDQ6VXNlcjczOTgyNTY=", + "avatar_url": "https://avatars.githubusercontent.com/u/7398256?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/krzema12", - "html_url": "https://github.com/krzema12", - "followers_url": "https://api.github.com/users/krzema12/followers", - "following_url": "https://api.github.com/users/krzema12/following{/other_user}", - "gists_url": "https://api.github.com/users/krzema12/gists{/gist_id}", - "starred_url": "https://api.github.com/users/krzema12/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/krzema12/subscriptions", - "organizations_url": "https://api.github.com/users/krzema12/orgs", - "repos_url": "https://api.github.com/users/krzema12/repos", - "events_url": "https://api.github.com/users/krzema12/events{/privacy}", - "received_events_url": "https://api.github.com/users/krzema12/received_events", + "url": "https://api.github.com/users/HerrDerb", + "html_url": "https://github.com/HerrDerb", + "followers_url": "https://api.github.com/users/HerrDerb/followers", + "following_url": "https://api.github.com/users/HerrDerb/following{/other_user}", + "gists_url": "https://api.github.com/users/HerrDerb/gists{/gist_id}", + "starred_url": "https://api.github.com/users/HerrDerb/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/HerrDerb/subscriptions", + "organizations_url": "https://api.github.com/users/HerrDerb/orgs", + "repos_url": "https://api.github.com/users/HerrDerb/repos", + "events_url": "https://api.github.com/users/HerrDerb/events{/privacy}", + "received_events_url": "https://api.github.com/users/HerrDerb/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 0, - "created_at": "2025-10-30T11:39:29Z", - "updated_at": "2025-11-12T23:12:26Z", - "closed_at": null, - "author_association": "NONE", + "created_at": "2025-07-10T11:04:06Z", + "updated_at": "2025-07-23T23:42:08Z", + "closed_at": "2025-07-23T23:42:08Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -532,9 +438,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "See https://docs.github.com/en/rest/git/refs?apiVersion=2022-11-28#list-matching-references. The endpoint is `/repos/{owner}/{repo}/git/matching-refs/{ref}`.\n\nThe goal of this endpoint is to list refs that match the given prefix. It's useful to avoid fetching all available refs.", + "body": "I am using `v2.0-rc.3` and when starting an application I get a load of warnings regarding annotation used in the github-api library.\n\n```\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GitHub.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings': class file for edu.umd.cs.findbugs.annotations.SuppressFBWarnings not found\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GitHub.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GitHub.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GitHub.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'value()' in type 'WithBridgeMethods': class file for com.infradna.tool.bridge_method_injector.WithBridgeMethods not found\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'adapterMethod()' in type 'WithBridgeMethods'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'WithBridgeMethods'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'adapterMethod()' in type 'WithBridgeMethods'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GitHub.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings': class file for edu.umd.cs.findbugs.annotations.SuppressFBWarnings not found\n.gradle\\caches\\modules-2\\files-2.1\\org.kohsuke\\github-api\\2.0-rc.3\\aa2079a423762ba0ce99457038d4d81a13be8c07\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GitHub.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\n...\n```\n\nTo avoid this one needs to add `spotbugs-annotations` and `bridge-method-annotation` to each project.\nAdditionally `bridge-method-annotation` is not even hosted on maven central and a third party repository also needs to be added. This is too much overhead just to avoid warnings. Therefor by adding the deps as `runtime` solves this issue for all users of the github library \n\n_Originally posted by @HerrDerb in https://github.com/hub4j/github-api/discussions/2090_", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2155/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2112/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -545,64 +451,54 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2155/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2112/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2120", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2111", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/events", - "html_url": "https://github.com/hub4j/github-api/issues/2120", - "id": 3274944747, - "node_id": "I_kwDOAAlq-s7DM7Dr", - "number": 2120, - "title": "Bridged artifact publishing failed for 2.0-rc.4", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2111/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2111/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2111/events", + "html_url": "https://github.com/hub4j/github-api/issues/2111", + "id": 3218887702, + "node_id": "I_kwDOAAlq-s6_3FQW", + "number": 2111, + "title": "Inlcude optional dependencies to avoid warnings", "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "login": "HerrDerb", + "id": 7398256, + "node_id": "MDQ6VXNlcjczOTgyNTY=", + "avatar_url": "https://avatars.githubusercontent.com/u/7398256?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "url": "https://api.github.com/users/HerrDerb", + "html_url": "https://github.com/HerrDerb", + "followers_url": "https://api.github.com/users/HerrDerb/followers", + "following_url": "https://api.github.com/users/HerrDerb/following{/other_user}", + "gists_url": "https://api.github.com/users/HerrDerb/gists{/gist_id}", + "starred_url": "https://api.github.com/users/HerrDerb/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/HerrDerb/subscriptions", + "organizations_url": "https://api.github.com/users/HerrDerb/orgs", + "repos_url": "https://api.github.com/users/HerrDerb/repos", + "events_url": "https://api.github.com/users/HerrDerb/events{/privacy}", + "received_events_url": "https://api.github.com/users/HerrDerb/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 1, - "created_at": "2025-07-29T20:45:38Z", - "updated_at": "2025-10-23T18:21:36Z", - "closed_at": null, - "author_association": "MEMBER", + "created_at": "2025-07-10T11:03:38Z", + "updated_at": "2025-10-23T18:09:10Z", + "closed_at": "2025-10-23T18:09:10Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -616,11 +512,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "https://github.com/hub4j/github-api/actions/runs/16606284210\n\n```\n2025-07-29T20:24:21.7667363Z ##[group]Run mvn -B clean deploy -DskipTests -Prelease -Pbridged\n2025-07-29T20:24:21.7668059Z \u001b[36;1mmvn -B clean deploy -DskipTests -Prelease -Pbridged\u001b[0m\n2025-07-29T20:24:21.7696714Z shell: /usr/bin/bash -e {0}\n2025-07-29T20:24:21.7697147Z env:\n2025-07-29T20:24:21.7698515Z JAVA_11_PLUS_MAVEN_OPTS: --add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED\n2025-07-29T20:24:21.7700071Z JAVA_HOME: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/17.0.16-8/x64\n2025-07-29T20:24:21.7700782Z JAVA_HOME_17_X64: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/17.0.16-8/x64\n2025-07-29T20:24:21.7702295Z MAVEN_OPTS: --add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED\n2025-07-29T20:24:21.7704065Z MAVEN_USERNAME: ***\n2025-07-29T20:24:21.7704550Z MAVEN_PASSWORD: ***\n2025-07-29T20:24:21.7705067Z MAVEN_GPG_PASSPHRASE: ***\n2025-07-29T20:24:21.7705491Z ##[endgroup]\n2025-07-29T20:24:23.0228744Z [INFO] Scanning for projects...\n2025-07-29T20:24:23.9536099Z [WARNING] \n2025-07-29T20:24:23.9537453Z [WARNING] Some problems were encountered while building the effective model for org.kohsuke:github-api-bridged:jar:2.0-rc.4\n2025-07-29T20:24:23.9540996Z [WARNING] 'artifactId' contains an expression but should be a constant. @ org.kohsuke:${github-api.artifactId}:2.0-rc.4, /home/runner/work/github-api/github-api/pom.xml, line 5, column 15\n2025-07-29T20:24:23.9546247Z [WARNING] \n2025-07-29T20:24:23.9547681Z [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.\n2025-07-29T20:24:23.9556489Z [WARNING] \n2025-07-29T20:24:23.9559777Z [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.\n2025-07-29T20:24:23.9560985Z [WARNING] \n2025-07-29T20:24:23.9618771Z [INFO] Inspecting build with total of 1 modules...\n2025-07-29T20:24:23.9621326Z [INFO] Installing Nexus Staging features:\n2025-07-29T20:24:23.9623096Z [INFO] ... total of 1 executions of maven-deploy-plugin replaced with nexus-staging-maven-plugin\n2025-07-29T20:24:23.9709735Z [INFO] \n2025-07-29T20:24:23.9710932Z [INFO] -------------------< org.kohsuke:github-api-bridged >-------------------\n2025-07-29T20:24:23.9731357Z [INFO] Building GitHub API for Java 2.0-rc.4\n2025-07-29T20:24:23.9732242Z [INFO] from pom.xml\n2025-07-29T20:24:23.9733097Z [INFO] --------------------------------[ jar ]---------------------------------\n2025-07-29T20:24:24.1975820Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/com/infradna/tool/bridge-method-injector/1.31/bridge-method-injector-1.31.jar\n2025-07-29T20:24:24.9010193Z [INFO] Downloaded from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/com/infradna/tool/bridge-method-injector/1.31/bridge-method-injector-1.31.jar (20 kB at 29 kB/s)\n2025-07-29T20:24:25.2685425Z [INFO] \n2025-07-29T20:24:25.2688450Z [INFO] --- clean:3.2.0:clean (default-clean) @ github-api-bridged ---\n2025-07-29T20:24:25.3139513Z [INFO] Deleting /home/runner/work/github-api/github-api/target\n2025-07-29T20:24:25.3751804Z [INFO] \n2025-07-29T20:24:25.3755019Z [INFO] --- sortpom:4.0.0:verify (default) @ github-api-bridged ---\n2025-07-29T20:24:25.4004807Z [INFO] Verifying file /home/runner/work/github-api/github-api/pom.xml\n2025-07-29T20:24:25.5574156Z [INFO] \n2025-07-29T20:24:25.5604522Z [INFO] --- resources:3.3.1:copy-resources (copy-bridged-resources) @ github-api-bridged ---\n2025-07-29T20:24:25.6211373Z [INFO] Copying 2 resources from src/main/resources/META-INF/native-image/org.kohsuke/github-api to target/classes/META-INF/native-image/org.kohsuke/github-api-bridged\n2025-07-29T20:24:25.6257379Z [INFO] \n2025-07-29T20:24:25.6260843Z [INFO] --- resources:3.3.1:resources (default-resources) @ github-api-bridged ---\n2025-07-29T20:24:25.6298334Z [INFO] Copying 2 resources from src/main/resources to target/classes\n2025-07-29T20:24:25.6313090Z [INFO] \n2025-07-29T20:24:25.6316388Z [INFO] --- compiler:3.14.0:compile (default-compile) @ github-api-bridged ---\n2025-07-29T20:24:25.7492402Z [INFO] Recompiling the module because of changed source code.\n2025-07-29T20:24:25.7577343Z [INFO] Compiling 248 source files with javac [debug release 11] to target/classes\n2025-07-29T20:24:29.2601532Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/GitHubRequest.java: Some input files use or override a deprecated API.\n2025-07-29T20:24:29.2605584Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/GitHubRequest.java: Recompile with -Xlint:deprecation for details.\n2025-07-29T20:24:29.2645024Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/AbstractBuilder.java: Some input files use unchecked or unsafe operations.\n2025-07-29T20:24:29.2647447Z [INFO] /home/runner/work/github-api/github-api/src/main/java/org/kohsuke/github/AbstractBuilder.java: Recompile with -Xlint:unchecked for details.\n2025-07-29T20:24:29.2649001Z [INFO] \n2025-07-29T20:24:29.2649896Z [INFO] --- bridge-method-injector:1.31:process (default) @ github-api-bridged ---\n2025-07-29T20:24:29.2652007Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm/9.8/asm-9.8.pom\n2025-07-29T20:24:29.2949999Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.pom\n2025-07-29T20:24:29.3649367Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.pom (2.4 kB at 34 kB/s)\n2025-07-29T20:24:29.3683200Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.pom\n2025-07-29T20:24:29.3975186Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.pom\n2025-07-29T20:24:29.4137372Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.pom (2.8 kB at 186 kB/s)\n2025-07-29T20:24:29.4162498Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.pom\n2025-07-29T20:24:29.4335247Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.pom\n2025-07-29T20:24:29.4487718Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.pom (2.6 kB at 173 kB/s)\n2025-07-29T20:24:29.4537743Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm/9.8/asm-9.8.jar\n2025-07-29T20:24:29.4724836Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.jar\n2025-07-29T20:24:29.4726869Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.jar\n2025-07-29T20:24:29.5200408Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.jar\n2025-07-29T20:24:29.5581033Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.8/asm-9.8.jar (126 kB at 3.3 MB/s)\n2025-07-29T20:24:29.5604951Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.jar\n2025-07-29T20:24:29.5607222Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.jar\n2025-07-29T20:24:29.5810217Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.8/asm-commons-9.8.jar (73 kB at 3.3 MB/s)\n2025-07-29T20:24:29.6160423Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.8/asm-tree-9.8.jar (52 kB at 911 kB/s)\n2025-07-29T20:24:29.7000553Z [INFO] \n2025-07-29T20:24:29.7004734Z [INFO] --- resources:3.3.1:testResources (default-testResources) @ github-api-bridged ---\n2025-07-29T20:24:29.8214547Z [INFO] Copying 80 resources from src/test/resources to target/test-classes\n2025-07-29T20:24:29.8321255Z [INFO] \n2025-07-29T20:24:29.8322203Z [INFO] --- compiler:3.14.0:testCompile (default-testCompile) @ github-api-bridged ---\n2025-07-29T20:24:29.8448238Z [INFO] Recompiling the module because of changed dependency.\n2025-07-29T20:24:29.8464047Z [INFO] Compiling 89 source files with javac [debug release 11] to target/test-classes\n2025-07-29T20:24:33.5592285Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/AbstractGHAppInstallationTest.java: Some input files use or override a deprecated API.\n2025-07-29T20:24:33.5595228Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/AbstractGHAppInstallationTest.java: Recompile with -Xlint:deprecation for details.\n2025-07-29T20:24:33.5597814Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/GitHubWireMockRule.java: Some input files use unchecked or unsafe operations.\n2025-07-29T20:24:33.5600435Z [INFO] /home/runner/work/github-api/github-api/src/test/java/org/kohsuke/github/GitHubWireMockRule.java: Recompile with -Xlint:unchecked for details.\n2025-07-29T20:24:33.5602352Z [INFO] \n2025-07-29T20:24:33.5605120Z [INFO] --- spring-boot:3.3.5:process-test-aot (process-test-aot) @ github-api-bridged ---\n2025-07-29T20:24:33.6745177Z [INFO] Skipping AOT test processing since tests are skipped\n2025-07-29T20:24:33.6751073Z [INFO] \n2025-07-29T20:24:33.6751944Z [INFO] --- surefire:3.5.3:test (default-test) @ github-api-bridged ---\n2025-07-29T20:24:33.7535969Z [INFO] Tests are skipped.\n2025-07-29T20:24:33.7536776Z [INFO] \n2025-07-29T20:24:33.7537563Z [INFO] --- jar:3.4.2:jar (default-jar) @ github-api-bridged ---\n2025-07-29T20:24:33.9589304Z [INFO] Building jar: /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:24:34.0705411Z [INFO] \n2025-07-29T20:24:34.0706287Z [INFO] --- javadoc:3.11.2:jar (attach-javadocs) @ github-api-bridged ---\n2025-07-29T20:24:34.5637285Z [INFO] No previous run data found, generating javadoc.\n2025-07-29T20:24:40.3755359Z [INFO] Building jar: /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:24:40.5876374Z [INFO] \n2025-07-29T20:24:40.5881032Z [INFO] --- source:3.3.1:jar-no-fork (attach-sources) @ github-api-bridged ---\n2025-07-29T20:24:40.7511753Z [INFO] Building jar: /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:24:40.8140859Z [INFO] \n2025-07-29T20:24:40.8142525Z [INFO] --- jacoco:0.8.12:prepare-agent-integration (default) @ github-api-bridged ---\n2025-07-29T20:24:40.8461770Z [INFO] jacoco.surefire.argLine set to -javaagent:/home/runner/.m2/repository/org/jacoco/org.jacoco.agent/0.8.12/org.jacoco.agent-0.8.12-runtime.jar=destfile=/home/runner/work/github-api/github-api/target/jacoco-it.exec,excludes=/org/kohsuke/github/example/*\n2025-07-29T20:24:40.8494367Z [INFO] \n2025-07-29T20:24:40.8495616Z [INFO] --- surefire:3.5.3:test (okhttp-test) @ github-api-bridged ---\n2025-07-29T20:24:40.8496881Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8497800Z [INFO] \n2025-07-29T20:24:40.8498984Z [INFO] --- surefire:3.5.3:test (httpclient-test-tracing) @ github-api-bridged ---\n2025-07-29T20:24:40.8524871Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8534351Z [INFO] \n2025-07-29T20:24:40.8535275Z [INFO] --- surefire:3.5.3:test (slow-or-flaky-test) @ github-api-bridged ---\n2025-07-29T20:24:40.8550533Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8557437Z [INFO] \n2025-07-29T20:24:40.8558398Z [INFO] --- surefire:3.5.3:test (slow-or-flaky-test-tracing) @ github-api-bridged ---\n2025-07-29T20:24:40.8572406Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8575439Z [INFO] \n2025-07-29T20:24:40.8576894Z [INFO] --- surefire:3.5.3:test (jwt0.11.x-test) @ github-api-bridged ---\n2025-07-29T20:24:40.8602410Z [INFO] Tests are skipped.\n2025-07-29T20:24:40.8608154Z [INFO] \n2025-07-29T20:24:40.8609090Z [INFO] --- spotless:2.44.5:check (spotless-check) @ github-api-bridged ---\n2025-07-29T20:24:41.2263304Z [INFO] Index file does not exist. Fallback to an empty index\n2025-07-29T20:24:46.6711821Z [INFO] Spotless.Java is keeping 337 files clean - 0 needs changes to be clean, 337 were already clean, 0 were skipped because caching determined they were already clean\n2025-07-29T20:24:46.6755549Z [INFO] \n2025-07-29T20:24:46.6756409Z [INFO] --- japicmp:0.23.1:cmp (default) @ github-api-bridged ---\n2025-07-29T20:24:46.8656192Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:24:46.8659827Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:24:46.8805000Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/maven-metadata.xml (379 B at 24 kB/s)\n2025-07-29T20:24:46.8950664Z [INFO] Downloading from repo.jenkins-ci.org: https://repo.jenkins-ci.org/public/org/kohsuke/github-api-bridged/2.0-rc.3/github-api-bridged-2.0-rc.3.jar\n2025-07-29T20:24:46.9134198Z [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/2.0-rc.3/github-api-bridged-2.0-rc.3.jar\n2025-07-29T20:24:46.9714434Z [INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/kohsuke/github-api-bridged/2.0-rc.3/github-api-bridged-2.0-rc.3.jar (653 kB at 11 MB/s)\n2025-07-29T20:24:47.4514453Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.diff'.\n2025-07-29T20:24:47.4782383Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.md'.\n2025-07-29T20:24:47.7245716Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.xml'.\n2025-07-29T20:24:47.7299099Z [INFO] Written file '/home/runner/work/github-api/github-api/target/japicmp/japicmp.html'.\n2025-07-29T20:24:47.7317925Z [INFO] \n2025-07-29T20:24:47.7318868Z [INFO] >>> spotbugs:4.9.3.0:check (run-spotbugs) > :spotbugs @ github-api-bridged >>>\n2025-07-29T20:24:47.7507293Z [INFO] \n2025-07-29T20:24:47.7508252Z [INFO] --- spotbugs:4.9.3.0:spotbugs (spotbugs) @ github-api-bridged ---\n2025-07-29T20:24:48.6436935Z [INFO] Fork Value is true\n2025-07-29T20:25:00.2299299Z [INFO] Done SpotBugs Analysis....\n2025-07-29T20:25:00.9449363Z [WARNING] Site model of 'org.kohsuke:github-api-bridged:jar:2.0-rc.4' for default locale is still using the old pre-version 2.0.0 model. You MUST migrate to the new model as soon as possible otherwise your build will break in the future!\n2025-07-29T20:25:00.9658654Z [INFO] Rendering content with org.kohsuke:maven-skin:jar:1.2 skin\n2025-07-29T20:25:01.4360715Z [INFO] \n2025-07-29T20:25:01.4361760Z [INFO] <<< spotbugs:4.9.3.0:check (run-spotbugs) < :spotbugs @ github-api-bridged <<<\n2025-07-29T20:25:01.4362774Z [INFO] \n2025-07-29T20:25:01.4363601Z [INFO] \n2025-07-29T20:25:01.4364417Z [INFO] --- spotbugs:4.9.3.0:check (run-spotbugs) @ github-api-bridged ---\n2025-07-29T20:25:01.4877054Z [INFO] BugInstance size is 0\n2025-07-29T20:25:01.4879822Z [INFO] Error size is 0\n2025-07-29T20:25:01.4886452Z [INFO] No errors/warnings found\n2025-07-29T20:25:01.4887183Z [INFO] \n2025-07-29T20:25:01.4887983Z [INFO] --- gpg:3.2.7:sign (sign-artifacts) @ github-api-bridged ---\n2025-07-29T20:25:01.5676590Z [INFO] Signer 'gpg' is signing 4 files with key default\n2025-07-29T20:25:02.5969472Z [INFO] \n2025-07-29T20:25:02.5970416Z [INFO] --- jacoco:0.8.12:report-integration (report) @ github-api-bridged ---\n2025-07-29T20:25:02.5998704Z [INFO] Skipping JaCoCo execution due to missing execution data file.\n2025-07-29T20:25:02.6000035Z [INFO] \n2025-07-29T20:25:02.6001071Z [INFO] --- jacoco:0.8.12:check (check) @ github-api-bridged ---\n2025-07-29T20:25:02.6069572Z [INFO] Skipping JaCoCo execution due to missing execution data file:/home/runner/work/github-api/github-api/target/jacoco-it.exec\n2025-07-29T20:25:02.6076175Z [INFO] \n2025-07-29T20:25:02.6077039Z [INFO] --- install:3.1.2:install (default-install) @ github-api-bridged ---\n2025-07-29T20:25:02.6323580Z [INFO] Installing /home/runner/work/github-api/github-api/pom.xml to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom\n2025-07-29T20:25:02.6332255Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:25:02.6355514Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:25:02.6376191Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:25:02.6386456Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc\n2025-07-29T20:25:02.6396073Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.pom.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc\n2025-07-29T20:25:02.6399252Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc\n2025-07-29T20:25:02.6402537Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar.asc to /home/runner/.m2/repository/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc\n2025-07-29T20:25:02.6437367Z [INFO] \n2025-07-29T20:25:02.6438347Z [INFO] --- nexus-staging:1.7.0:deploy (injected-nexus-deploy) @ github-api-bridged ---\n2025-07-29T20:25:02.6570971Z [INFO] Performing local staging (local stagingDirectory=\"/home/runner/work/github-api/github-api/target/nexus-staging/staging\")...\n2025-07-29T20:25:02.6591567Z [INFO] + Using server credentials \"sonatype-nexus-staging\" from Maven settings.\n2025-07-29T20:25:03.4301873Z [INFO] * Connected to Nexus at https://ossrh-staging-api.central.sonatype.com:443/, is version 2.15.1-02 and edition \"Professional\"\n2025-07-29T20:25:03.6756020Z [INFO] * Using staging profile ID \"org.kohsuke\" (matched by Nexus).\n2025-07-29T20:25:03.6791917Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:25:03.6803873Z [INFO] Installing /home/runner/work/github-api/github-api/pom.xml to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom\n2025-07-29T20:25:03.6829619Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:25:03.6863148Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:25:03.6878197Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.jar.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc\n2025-07-29T20:25:03.6892786Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4.pom.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc\n2025-07-29T20:25:03.6906107Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-javadoc.jar.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc\n2025-07-29T20:25:03.6913739Z [INFO] Installing /home/runner/work/github-api/github-api/target/github-api-bridged-2.0-rc.4-sources.jar.asc to /home/runner/work/github-api/github-api/target/nexus-staging/staging/org.kohsuke/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc\n2025-07-29T20:25:03.6922958Z [INFO] Performing remote staging...\n2025-07-29T20:25:03.6924739Z [INFO] \n2025-07-29T20:25:03.6926171Z [INFO] * Remote staging into staging profile ID \"org.kohsuke\"\n2025-07-29T20:25:04.0610456Z [INFO] * Created staging repository with ID \"org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17\".\n2025-07-29T20:25:04.0612663Z [INFO] * Staging repository at https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17\n2025-07-29T20:25:04.0614508Z [INFO] * Uploading locally staged artifacts to profile org.kohsuke\n2025-07-29T20:25:04.0659242Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc\n2025-07-29T20:25:04.6077033Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar.asc (488 B at 900 B/s)\n2025-07-29T20:25:04.6081763Z [INFO] Downloading from sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:25:04.7329231Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/maven-metadata.xml\n2025-07-29T20:25:05.3348018Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/maven-metadata.xml (315 B at 523 B/s)\n2025-07-29T20:25:05.3364339Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc\n2025-07-29T20:25:05.6253859Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar.asc (488 B at 1.7 kB/s)\n2025-07-29T20:25:05.6261209Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc\n2025-07-29T20:25:05.8646568Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom.asc (488 B at 2.0 kB/s)\n2025-07-29T20:25:05.8654406Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar\n2025-07-29T20:25:07.2160449Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar (2.4 MB at 1.8 MB/s)\n2025-07-29T20:25:07.2169227Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar\n2025-07-29T20:25:08.0248105Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.jar (653 kB at 808 kB/s)\n2025-07-29T20:25:08.0251530Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom\n2025-07-29T20:25:08.7545703Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4.pom (36 kB at 50 kB/s)\n2025-07-29T20:25:08.7558010Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar\n2025-07-29T20:25:09.4824315Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-sources.jar (381 kB at 524 kB/s)\n2025-07-29T20:25:09.4830753Z [INFO] Uploading to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc\n2025-07-29T20:25:09.7329585Z [INFO] Uploaded to sonatype-nexus-staging: https://ossrh-staging-api.central.sonatype.com:443/service/local/staging/deployByRepositoryId/org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17/org/kohsuke/github-api-bridged/2.0-rc.4/github-api-bridged-2.0-rc.4-javadoc.jar.asc (488 B at 2.0 kB/s)\n2025-07-29T20:25:09.7332314Z [INFO] * Upload of locally staged artifacts finished.\n2025-07-29T20:25:09.7333893Z [INFO] * Closing staging repository with ID \"org.kohsuke--57d1c35a-41be-4a93-be17-1400acd8fc17\".\n2025-07-29T20:25:21.0027055Z [ERROR] Remote staging finished with a failure: 400 - Bad Request\n2025-07-29T20:25:21.0033011Z [INFO] ------------------------------------------------------------------------\n2025-07-29T20:25:21.0034141Z [INFO] BUILD FAILURE\n2025-07-29T20:25:21.0035177Z [INFO] ------------------------------------------------------------------------\n2025-07-29T20:25:21.0036666Z [INFO] Total time: 58.002 s\n2025-07-29T20:25:21.0037305Z [INFO] Finished at: 2025-07-29T20:25:21Z\n2025-07-29T20:25:21.0038257Z [INFO] ------------------------------------------------------------------------\n2025-07-29T20:25:21.0042398Z [ERROR] Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.7.0:deploy (injected-nexus-deploy) on project github-api-bridged: Remote staging failed: 400 - Bad Request -> [Help 1]\n2025-07-29T20:25:21.0044028Z [ERROR] \n2025-07-29T20:25:21.0044784Z [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.\n2025-07-29T20:25:21.0045816Z [ERROR] Re-run Maven using the -X switch to enable full debug logging.\n2025-07-29T20:25:21.0046617Z [ERROR] \n2025-07-29T20:25:21.0047546Z [ERROR] For more information about the errors and possible solutions, please read the following articles:\n2025-07-29T20:25:21.0048439Z [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException\n2025-07-29T20:25:21.0544587Z ##[error]Process completed with exit code 1.\n2025-07-29T20:25:21.0652621Z Post job cleanup.\n2025-07-29T20:25:21.2338798Z Removing private key from keychain\n2025-07-29T20:25:21.2639433Z Post job cleanup.\n2025-07-29T20:25:21.3579766Z [command]/usr/bin/git version\n2025-07-29T20:25:21.3623859Z git version 2.50.1\n2025-07-29T20:25:21.3669780Z Temporarily overriding HOME='/home/runner/work/_temp/f63c6d9c-0210-4993-9eab-7c153795d64a' before making global git config changes\n2025-07-29T20:25:21.3671649Z Adding repository directory to the temporary git global config as a safe directory\n2025-07-29T20:25:21.3685669Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/github-api/github-api\n2025-07-29T20:25:21.3725232Z [command]/usr/bin/git config --local --name-only --get-regexp core\\.sshCommand\n2025-07-29T20:25:21.3760717Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'core\\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :\"\n2025-07-29T20:25:21.4023643Z [command]/usr/bin/git config --local --name-only --get-regexp http\\.https\\:\\/\\/github\\.com\\/\\.extraheader\n2025-07-29T20:25:21.4049117Z http.https://github.com/.extraheader\n2025-07-29T20:25:21.4062530Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader\n2025-07-29T20:25:21.4096473Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'http\\.https\\:\\/\\/github\\.com\\/\\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :\"\n2025-07-29T20:25:21.4481669Z Cleaning up orphan processes\n```", + "body": "I am using `v2.0-rc.3` and when starting an application I get a load of warnings regarding annotation used in the github-api library.\r\n\r\n```\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'value()' in type 'WithBridgeMethods': class file for com.infradna.tool.bridge_method_injector.WithBridgeMethods not found\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'adapterMethod()' in type 'WithBridgeMethods'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings': class file for edu.umd.cs.findbugs.annotations.SuppressFBWarnings not found\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHArtifact.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'WithBridgeMethods'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'adapterMethod()' in type 'WithBridgeMethods'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'value()' in type 'SuppressFBWarnings'\r\n...\\github-api-2.0-rc.3.jar(/org/kohsuke/github/GHWorkflowRun.class): warning: Cannot find annotation method 'justification()' in type 'SuppressFBWarnings'\r\n...\r\n```\r\nTo avoid this warnings, one needs to add the required dependencies \r\n```\r\n- com.infradna.tool:bridge-method-annotation\r\n- com.github.spotbugs:spotbugs-annotations\r\n```\r\nto each project. Additionally the `bridge-method-annotation` dependency doesn't even exist on maven central and a thirdparty repo needs to be added to the project which is a massive overhead to only avoid warnings.\r\n\r\nBy adding the dependencies as `runtime` this solves the problem for all users of this library\r\n_Originally posted by @HerrDerb in https://github.com/hub4j/github-api/discussions/2090_", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2120/reactions", - "total_count": 1, - "+1": 1, + "url": "https://api.github.com/repos/hub4j/github-api/issues/2111/reactions", + "total_count": 0, + "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, @@ -629,39 +525,39 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2120/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2111/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2145", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2073", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/events", - "html_url": "https://github.com/hub4j/github-api/issues/2145", - "id": 3451557731, - "node_id": "I_kwDOAAlq-s7Nupdj", - "number": 2145, - "title": "How to extract the dependencies of a repository?", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2073/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2073/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2073/events", + "html_url": "https://github.com/hub4j/github-api/issues/2073", + "id": 2950997416, + "node_id": "I_kwDOAAlq-s6v5KWo", + "number": 2073, + "title": "Replace methods which return `Date` with `Instant` or `ZonedDateTime` for 2.x", "user": { - "login": "tohidemyname", - "id": 42423544, - "node_id": "MDQ6VXNlcjQyNDIzNTQ0", - "avatar_url": "https://avatars.githubusercontent.com/u/42423544?v=4", + "login": "solonovamax", + "id": 46940694, + "node_id": "MDQ6VXNlcjQ2OTQwNjk0", + "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/tohidemyname", - "html_url": "https://github.com/tohidemyname", - "followers_url": "https://api.github.com/users/tohidemyname/followers", - "following_url": "https://api.github.com/users/tohidemyname/following{/other_user}", - "gists_url": "https://api.github.com/users/tohidemyname/gists{/gist_id}", - "starred_url": "https://api.github.com/users/tohidemyname/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/tohidemyname/subscriptions", - "organizations_url": "https://api.github.com/users/tohidemyname/orgs", - "repos_url": "https://api.github.com/users/tohidemyname/repos", - "events_url": "https://api.github.com/users/tohidemyname/events{/privacy}", - "received_events_url": "https://api.github.com/users/tohidemyname/received_events", + "url": "https://api.github.com/users/solonovamax", + "html_url": "https://github.com/solonovamax", + "followers_url": "https://api.github.com/users/solonovamax/followers", + "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", + "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", + "organizations_url": "https://api.github.com/users/solonovamax/orgs", + "repos_url": "https://api.github.com/users/solonovamax/repos", + "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", + "received_events_url": "https://api.github.com/users/solonovamax/received_events", "type": "User", "user_view_type": "public", "site_admin": false @@ -675,18 +571,27 @@ "color": "0e8a16", "default": true, "description": "" + }, + { + "id": 1780165359, + "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", + "name": "breaking change", + "color": "b60205", + "default": false, + "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 2, - "created_at": "2025-09-25T02:12:02Z", - "updated_at": "2025-10-23T18:12:16Z", - "closed_at": null, - "author_association": "NONE", + "comments": 1, + "created_at": "2025-03-26T23:38:02Z", + "updated_at": "2025-04-11T07:02:09Z", + "closed_at": "2025-04-11T07:02:09Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -700,9 +605,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "I notice that Github has a rest api to retrieve the dependencies of a repository:\n\nhttps://docs.github.com/en/rest/dependency-graph/sboms?apiVersion=2022-11-28#export-a-software-bill-of-materials-sbom-for-a-repository\n\nHowever, I did not find a corresponding API call in github-api. I tried to implement the api by myself:\n\n```\npublic List getDependGraph() throws IOException {\n\t\tDependence[] list = root().createRequest()\n\t .withUrlPath(getApiTailUrl(\"dependency-graph/sbom\"))\n\t .fetch(Dependence[].class);\n\t return Arrays.asList(list);\n\t\t\n\t}\n```\n\nThe above code returns a 404 error:\n\n```\norg.kohsuke.github.GHFileNotFoundException: https://api.github.com/repos/sgtest/pinned-lucene/stats/dependency-graph/sbom {\n \"message\": \"Not Found\",\n \"documentation_url\": \"https://docs.github.com/rest\",\n \"status\": \"404\"\n}\n```\n\nI tried to call the url:\n`https://api.github.com/repos/sgtest/pinned-lucene/stats/dependency-graph/sbom`\n\nIt also returns a 404 error. \n\nIs this a problem in Github? Would you please give me some suggestions on how to implement the API for github-api?", + "body": "There are multiple methods which return `Date` such as `GHObject#getUpdatedAt()`.\nthe old java `Date` api should really be replaced with one of the following:\n- `Instant` (imo this would be the best pick)\n- `LocalDateTime`\n- `ZonedDateTime`\n\nsince a 2.x version is currently being made, now would be the best time to replace it.\n\nit is recommended to avoid the old date-time api and instead use the newer api. many of the methods on `Date` are even marked as deprecated.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2145/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2073/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -713,39 +618,39 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2145/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2073/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2106", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2061", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/events", - "html_url": "https://github.com/hub4j/github-api/issues/2106", - "id": 3128804786, - "node_id": "I_kwDOAAlq-s66fcWy", - "number": 2106, - "title": "GHPullRequestReviewComment.getLine() always returns -1", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/events", + "html_url": "https://github.com/hub4j/github-api/issues/2061", + "id": 2923132207, + "node_id": "I_kwDOAAlq-s6uO3Uv", + "number": 2061, + "title": "`GHIssue#isPullRequest` is false despite being a PR", "user": { - "login": "tsantalis", - "id": 1483516, - "node_id": "MDQ6VXNlcjE0ODM1MTY=", - "avatar_url": "https://avatars.githubusercontent.com/u/1483516?v=4", + "login": "Haarolean", + "id": 1494347, + "node_id": "MDQ6VXNlcjE0OTQzNDc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/tsantalis", - "html_url": "https://github.com/tsantalis", - "followers_url": "https://api.github.com/users/tsantalis/followers", - "following_url": "https://api.github.com/users/tsantalis/following{/other_user}", - "gists_url": "https://api.github.com/users/tsantalis/gists{/gist_id}", - "starred_url": "https://api.github.com/users/tsantalis/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/tsantalis/subscriptions", - "organizations_url": "https://api.github.com/users/tsantalis/orgs", - "repos_url": "https://api.github.com/users/tsantalis/repos", - "events_url": "https://api.github.com/users/tsantalis/events{/privacy}", - "received_events_url": "https://api.github.com/users/tsantalis/received_events", + "url": "https://api.github.com/users/Haarolean", + "html_url": "https://github.com/Haarolean", + "followers_url": "https://api.github.com/users/Haarolean/followers", + "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", + "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", + "organizations_url": "https://api.github.com/users/Haarolean/orgs", + "repos_url": "https://api.github.com/users/Haarolean/repos", + "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", + "received_events_url": "https://api.github.com/users/Haarolean/received_events", "type": "User", "user_view_type": "public", "site_admin": false @@ -759,27 +664,18 @@ "color": "e11d21", "default": true, "description": null - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 0, - "created_at": "2025-06-09T00:16:26Z", - "updated_at": "2025-10-23T18:06:05Z", - "closed_at": null, - "author_association": "NONE", + "created_at": "2025-03-16T15:23:51Z", + "updated_at": "2026-02-10T07:49:35Z", + "closed_at": "2026-02-10T07:49:35Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -793,9 +689,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Describe the bug**\nGHPullRequestReviewComment.getLine() API does not return accurate value.\nAs a matter of fact it always returns -1\n\n**To Reproduce**\nSteps to reproduce the behavior:\nFor the following PR review comment the line is 422\nhttps://api.github.com/repos/JabRef/jabref/pulls/comments/2127829134\n```java\n//PR URL: https://github.com/JabRef/jabref/pull/11845\nGHRepository repository = ...;\nGHPullRequest pullRequest = repository.getPullRequest(11845);\nPagedIterable reviews = pullRequest.listReviews();\n\nfor (GHPullRequestReview review : reviews) {\n PagedIterable comments = review.listReviewComments();\n for (GHPullRequestReviewComment comment : comments) {\n String path = comment.getPath();\n int lineNumber = comment.getLine();\n }\n}\n```\n\n**Expected behavior**\nThe line number for\nhttps://api.github.com/repos/JabRef/jabref/pulls/comments/2127829134\nshould be 422 instead of -1\n\n**Desktop (please complete the following information):**\n - OS: iOS\n - Browser [Firefox]\n - Version [139]\n\n**Additional context**\nAdd any other context about the problem here.\n", + "body": "**Describe the bug**\n`isPullRequest` in GHIssue returns false due to `pull_request == null` condition. The PR object was acquired via `payload.getPullRequest()` method of `GHEventPayload.PullRequest` class.\n\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Get an instance of `GHEventPayload.PullRequest` event\n2. Get the pr entity via `payload.getPullRequest()`\n3. Observe that despite object being an instance of `GHPullRequest` the return value of `isPullRequest` method is false.\n\n**Expected behavior**\nexpected true", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2106/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2061/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -806,72 +702,53 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2106/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2126", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2057", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/events", - "html_url": "https://github.com/hub4j/github-api/issues/2126", - "id": 3327323318, - "node_id": "I_kwDOAAlq-s7GUuy2", - "number": 2126, - "title": "Update documentation on pluggable Http Client ", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2057/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2057/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2057/events", + "html_url": "https://github.com/hub4j/github-api/issues/2057", + "id": 2913719792, + "node_id": "I_kwDOAAlq-s6tq9Xw", + "number": 2057, + "title": "Comments seem to be stripped?", "user": { - "login": "ErrorxCode", - "id": 65817230, - "node_id": "MDQ6VXNlcjY1ODE3MjMw", - "avatar_url": "https://avatars.githubusercontent.com/u/65817230?v=4", + "login": "koppor", + "id": 1366654, + "node_id": "MDQ6VXNlcjEzNjY2NTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1366654?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/ErrorxCode", - "html_url": "https://github.com/ErrorxCode", - "followers_url": "https://api.github.com/users/ErrorxCode/followers", - "following_url": "https://api.github.com/users/ErrorxCode/following{/other_user}", - "gists_url": "https://api.github.com/users/ErrorxCode/gists{/gist_id}", - "starred_url": "https://api.github.com/users/ErrorxCode/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/ErrorxCode/subscriptions", - "organizations_url": "https://api.github.com/users/ErrorxCode/orgs", - "repos_url": "https://api.github.com/users/ErrorxCode/repos", - "events_url": "https://api.github.com/users/ErrorxCode/events{/privacy}", - "received_events_url": "https://api.github.com/users/ErrorxCode/received_events", + "url": "https://api.github.com/users/koppor", + "html_url": "https://github.com/koppor", + "followers_url": "https://api.github.com/users/koppor/followers", + "following_url": "https://api.github.com/users/koppor/following{/other_user}", + "gists_url": "https://api.github.com/users/koppor/gists{/gist_id}", + "starred_url": "https://api.github.com/users/koppor/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/koppor/subscriptions", + "organizations_url": "https://api.github.com/users/koppor/orgs", + "repos_url": "https://api.github.com/users/koppor/repos", + "events_url": "https://api.github.com/users/koppor/events{/privacy}", + "received_events_url": "https://api.github.com/users/koppor/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 2070644911, - "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", - "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", - "name": "documentation", - "color": "6ee5cb", - "default": true, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 1, - "created_at": "2025-08-16T14:21:39Z", - "updated_at": "2025-10-23T18:02:32Z", - "closed_at": null, + "created_at": "2025-03-12T11:56:46Z", + "updated_at": "2025-03-12T13:08:56Z", + "closed_at": "2025-03-12T13:08:55Z", "author_association": "NONE", "type": null, "active_lock_reason": null, @@ -886,9 +763,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "The Library uses Java HttpClient, which was removed in Android 7. Using this library on > Android 7 results in the following error:\n\n`NoClassDefFoundError: Failed resolution of: Ljava/net/http/HttpClient;`\n\n\n**To Reproduce**\nRun `GitHub.connectUsingOAuth()` on android (API > 24)\n\n**Expected behaviour**\nNo error, connection established\n\n**Desktop (please complete the following information):**\n - OS: Android\n - Version 16\n\n\nPlease migrate from java **HttpClient** to OkHttp to keep wider support", + "body": "https://github.com/JabRef/jabref/pull/12710#pullrequestreview-2678113413\n\n![Image](https://github.com/user-attachments/assets/1e135941-65b8-410d-ae19-04f40d1786db)\n\nDebug of `comment.getBody();` does not include this text:\n\n![Image](https://github.com/user-attachments/assets/c1530e54-67ab-4520-b269-1a70c1065dd1)\n\norg.kohsuke.github.GHIssueComment#update looks good - is it a GitHub API issue.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2126/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2057/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -899,64 +776,64 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2126/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2057/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2009", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2040", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/events", - "html_url": "https://github.com/hub4j/github-api/issues/2009", - "id": 2789691143, - "node_id": "I_kwDOAAlq-s6mR08H", - "number": 2009, - "title": "`GitHubAbuseLimitHandler#isError` fails to detect some secondary rate limit errors", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2040/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2040/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2040/events", + "html_url": "https://github.com/hub4j/github-api/issues/2040", + "id": 2869668624, + "node_id": "I_kwDOAAlq-s6rC6sQ", + "number": 2040, + "title": "Status of 2.x stream", "user": { - "login": "yrodiere", - "id": 412878, - "node_id": "MDQ6VXNlcjQxMjg3OA==", - "avatar_url": "https://avatars.githubusercontent.com/u/412878?v=4", + "login": "nedtwigg", + "id": 2924992, + "node_id": "MDQ6VXNlcjI5MjQ5OTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/2924992?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/yrodiere", - "html_url": "https://github.com/yrodiere", - "followers_url": "https://api.github.com/users/yrodiere/followers", - "following_url": "https://api.github.com/users/yrodiere/following{/other_user}", - "gists_url": "https://api.github.com/users/yrodiere/gists{/gist_id}", - "starred_url": "https://api.github.com/users/yrodiere/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/yrodiere/subscriptions", - "organizations_url": "https://api.github.com/users/yrodiere/orgs", - "repos_url": "https://api.github.com/users/yrodiere/repos", - "events_url": "https://api.github.com/users/yrodiere/events{/privacy}", - "received_events_url": "https://api.github.com/users/yrodiere/received_events", + "url": "https://api.github.com/users/nedtwigg", + "html_url": "https://github.com/nedtwigg", + "followers_url": "https://api.github.com/users/nedtwigg/followers", + "following_url": "https://api.github.com/users/nedtwigg/following{/other_user}", + "gists_url": "https://api.github.com/users/nedtwigg/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nedtwigg/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nedtwigg/subscriptions", + "organizations_url": "https://api.github.com/users/nedtwigg/orgs", + "repos_url": "https://api.github.com/users/nedtwigg/repos", + "events_url": "https://api.github.com/users/nedtwigg/events{/privacy}", + "received_events_url": "https://api.github.com/users/nedtwigg/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 9, - "created_at": "2025-01-15T12:24:43Z", - "updated_at": "2025-09-05T19:31:30Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", + "comments": 6, + "created_at": "2025-02-21T17:51:09Z", + "updated_at": "2025-03-23T06:48:12Z", + "closed_at": "2025-03-23T06:48:12Z", + "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -970,9 +847,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "(Maintainer's note: see also #1975 )\n**Describe the bug**\n\n#1895 attempted to detect more errors related to secondary rate limits, but it seems there are more.\n\nIt appears GitHub APIs -- https://api.github.com/search/issues in particular, maybe more -- can hit a secondary limit and just return a 403 error, with no particular header indicating that a limit was reached. No `Retry-After`, no `gh-limited-by`, nothing. Only the body response explains \"You have exceeded a secondary rate limit. Please wait a few minutes before you try again\". (and in fact waiting 30s/1min is enough).\n\nThis, understandably, doesn't get caught by `GitHubAbuseLimitHandler#isError`, and results in the request simply failing.\n\n**To Reproduce**\n\nSend the following request a few dozen times (or just a dozen when unauthenticated):\n\nhttps://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581\n\nObviously my actual use case is not to send the _same_ request over and over, but it's enough to reproduce the problem.\n\nInterestingly, you can just click that URL in your browser, refresh quickly a couple times, and you'll be able to observe the exact error I'm running into: HTTP 403 with no particular retry header.\n\nSee bottom of this messsage for more logs.\n\n**Expected behavior**\n\nIdeally, I'd expect such requests to be detected as secondary rate limit errors, and the client to just wait and retry. For my use case it's fine to wait a minute.\n\nFailing that, I'd settle for a way to override `GitHubAbuseLimitHandler#isError` and implement some dirty logic based on the response body in there. But this method is currently package-protected.\n\n**Desktop (please complete the following information):**\n - OS: Fedora 41\n - Browser [e.g. chrome, safari]: no browser involved\n - Version [e.g. 22]: no browser involved\n\n**Additional context**\n\nHere is a failing request/response with all details/headers. I got it using `-Djdk.httpclient.HttpClient.log=all`.\n\n```\n2025-01-15 13:04:53,295 INFO [jdk.htt.HttpClient] (executor-thread-1) REQUEST: https://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581 GET\n2025-01-15 13:04:53,295 INFO [jdk.htt.HttpClient] (executor-thread-1) HEADERS: REQUEST HEADERS:\nGET /search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581 HTTP/1.1\nContent-Length: 0\nHost: api.github.com\nUser-Agent: Java-http-client/17.0.13\nAccept: application/vnd.github+json\nAccept-Encoding: gzip\nAuthorization: token \nX-GitHub-Api-Version: 2022-11-28\n\n\n2025-01-15 13:04:53,422 INFO [jdk.htt.HttpClient] (HttpClient-3-Worker-0) HEADERS: RESPONSE HEADERS:\n access-control-allow-origin: *\n access-control-expose-headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset\n content-encoding: gzip\n content-security-policy: default-src 'none'\n content-type: application/json; charset=utf-8\n date: Wed, 15 Jan 2025 12:04:53 GMT\n referrer-policy: origin-when-cross-origin, strict-origin-when-cross-origin\n server: github.com\n strict-transport-security: max-age=31536000; includeSubdomains; preload\n transfer-encoding: chunked\n vary: Accept-Encoding, Accept, X-Requested-With\n x-content-type-options: nosniff\n x-frame-options: deny\n x-github-api-version-selected: 2022-11-28\n x-github-media-type: github.v3; format=json\n x-github-request-id: \n x-ratelimit-limit: 30\n x-ratelimit-remaining: 21\n x-ratelimit-reset: 1736942747\n x-ratelimit-resource: search\n x-ratelimit-used: 9\n x-xss-protection: 0\n\n\n2025-01-15 13:04:53,423 INFO [jdk.htt.HttpClient] (HttpClient-3-Worker-0) RESPONSE: (GET https://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581) 403 HTTP_1_1 Local port: 57158\n```\n\nI end up with this error, proving the secondary limit error wasn't detected:\n\n```\norg.kohsuke.github.GHException: Failed to retrieve https://api.github.com/search/issues?sort=updated&order=desc&q=repo%3Ayrodiere%2Fquarkus-github-playground+is%3Aissue+is%3Aopen+label%3Atriage%2Fneeds-feedback%2Ctriage%2Fneeds-reproducer+label%3Aarea%2Fhibernate-search+updated%3A%3C2025-01-15T12%3A03%3A47.243460581\n at org.kohsuke.github.GitHubPageIterator.fetch(GitHubPageIterator.java:157)\n at org.kohsuke.github.GitHubPageIterator.hasNext(GitHubPageIterator.java:93)\n at org.kohsuke.github.PagedSearchIterable$1.hasNext(PagedSearchIterable.java:111)\n at org.kohsuke.github.PagedIterator.fetch(PagedIterator.java:116)\n at org.kohsuke.github.PagedIterator.hasNext(PagedIterator.java:84)\n at java.base/java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1855)\n at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.lambda$initPartialTraversalState$0(StreamSpliterators.java:292)\n at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(StreamSpliterators.java:206)\n at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(StreamSpliterators.java:161)\n at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:298)\n at java.base/java.util.Spliterators$1Adapter.hasNext(Spliterators.java:681)\n at io.quarkus.github.lottery.draw.Lottery$Draw.runSingleRound(Lottery.java:286)\n at io.quarkus.github.lottery.draw.Lottery.draw(Lottery.java:80)\n at io.quarkus.github.lottery.LotteryService.doDrawForRepository(LotteryService.java:109)\n at io.quarkus.github.lottery.LotteryService.drawForRepository(LotteryService.java:82)\n at io.quarkus.github.lottery.LotteryService.draw(LotteryService.java:66)\n at io.quarkus.github.lottery.LotteryService_ClientProxy.draw(Unknown Source)\n at io.quarkus.github.lottery.LotteryCli$DrawCommand.run(LotteryCli.java:27)\n at io.quarkus.github.lottery.LotteryCliCommandDispatcherImpl.dispatch(Unknown Source)\n at io.quarkus.github.lottery.LotteryCliCommandDispatcherImpl_Multiplexer.dispatch_9c21b751bd1c3c76c9e9f8d4cbcacbc05e9e7ed7(Unknown Source)\n at io.quarkus.github.lottery.LotteryCliCommandDispatcherImpl_Multiplexer_Observer_dispatch_9c21b751bd1c3c76c9e9f8d4cbcacbc05e9e7ed7_usg3oRfZFhFtsdK_zfgxrYi5m6Q.notify(Unknown Source)\n at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:351)\n at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:333)\n at io.quarkus.arc.impl.EventImpl$1.get(EventImpl.java:110)\n at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)\n at io.quarkus.vertx.core.runtime.VertxCoreRecorder$15.runWith(VertxCoreRecorder.java:637)\n at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)\n at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2654)\n at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)\n at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)\n at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)\n at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)\n at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n at java.base/java.lang.Thread.run(Thread.java:840)\nCaused by: org.kohsuke.github.HttpException: {\n \"documentation_url\": \"https://docs.github.com/free-pro-team@latest/rest/overview/rate-limits-for-the-rest-api#about-secondary-rate-limits\",\n \"message\": \"You have exceeded a secondary rate limit. Please wait a few minutes before you try again. If you reach out to GitHub Support for help, please include the request ID 6F00:24CFC5:.\"\n}\n at org.kohsuke.github.GitHubConnectorResponseErrorHandler$1.onError(GitHubConnectorResponseErrorHandler.java:83)\n at org.kohsuke.github.GitHubClient.detectKnownErrors(GitHubClient.java:504)\n at org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:464)\n at org.kohsuke.github.GitHubPageIterator.fetch(GitHubPageIterator.java:146)\n ... 33 more\n```", + "body": "Hello! Thanks very much for maintaining this great library! The changes coming in 2.x seem good, I'm eager to be an early adopter of it.\n\nDo you have rough ideas around\n\n- what might be broken in the 2.x train\n- what might still change in the 2.x train\n- how long until the 2.x train is out of beta\n\nNot looking for hard commitments or anything, just your general vibe.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2009/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2040/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -983,39 +860,39 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2009/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2040/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1975", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2039", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/events", - "html_url": "https://github.com/hub4j/github-api/issues/1975", - "id": 2604556081, - "node_id": "I_kwDOAAlq-s6bPl8x", - "number": 1975, - "title": "Implement \"Secondary rate limit\" behavior to internally throttle querying ", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2039/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2039/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2039/events", + "html_url": "https://github.com/hub4j/github-api/issues/2039", + "id": 2869632221, + "node_id": "I_kwDOAAlq-s6rCxzd", + "number": 2039, + "title": "Allow a GHPullRequest to set auto-merge", "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "login": "roxspring", + "id": 783694, + "node_id": "MDQ6VXNlcjc4MzY5NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/783694?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "url": "https://api.github.com/users/roxspring", + "html_url": "https://github.com/roxspring", + "followers_url": "https://api.github.com/users/roxspring/followers", + "following_url": "https://api.github.com/users/roxspring/following{/other_user}", + "gists_url": "https://api.github.com/users/roxspring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/roxspring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/roxspring/subscriptions", + "organizations_url": "https://api.github.com/users/roxspring/orgs", + "repos_url": "https://api.github.com/users/roxspring/repos", + "events_url": "https://api.github.com/users/roxspring/events{/privacy}", + "received_events_url": "https://api.github.com/users/roxspring/received_events", "type": "User", "user_view_type": "public", "site_admin": false @@ -1029,18 +906,27 @@ "color": "f4cc53", "default": false, "description": "" + }, + { + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 5, - "created_at": "2024-10-22T07:39:26Z", - "updated_at": "2025-09-04T16:55:29Z", - "closed_at": null, - "author_association": "MEMBER", + "comments": 7, + "created_at": "2025-02-21T17:32:36Z", + "updated_at": "2025-03-19T17:24:00Z", + "closed_at": "2025-03-19T17:24:00Z", + "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1054,11 +940,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "See #1805 \nSee #1842 \nSee #2009\n\nThis docs page describes secondary rate limit behavior: \nhttps://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#about-secondary-rate-limits\n\nAs of this reading it says: \n> You may encounter a secondary rate limit if you:\n\n> \n> * Make too many concurrent requests. No more than 100 concurrent requests are allowed. This limit is shared across the REST API and GraphQL API.\n> * Make too many requests to a single endpoint per minute. No more than 900 points per minute are allowed for REST API endpoints, and no more than 2,000 points per minute are allowed for the GraphQL API endpoint. For more information about points, see \"[Calculating points for the secondary rate limit](https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#calculating-points-for-the-secondary-rate-limit).\"\n> * Make too many requests per minute. No more than 90 seconds of CPU time per 60 seconds of real time is allowed. No more than 60 seconds of this CPU time may be for the GraphQL API. You can roughly estimate the CPU time by measuring the total response time for your API requests.\n> * Create too much content on GitHub in a short amount of time. In general, no more than 80 content-generating requests per minute and no more than 500 content-generating requests per hour are allowed. Some endpoints have lower content creation limits. Content creation limits include actions taken on the GitHub web interface as well as via the REST API and GraphQL API.\n> \n> These secondary rate limits are subject to change without notice. You may also encounter a secondary rate limit for undisclosed reasons.\n\nThese are incredibly loosely defined guides and you cannot query for them ahead of time. 👎 It looks like we need to take the path some users have suggested and make rate limiting much more resilient, potentially allowing users to write their own rate limit strategies for handling secondary rate limits. \n\nThe current internal `GitHubRateLimitChecker` would need to be replaced by a `PrimaryGitHubRateLimiter` which extends a new `GitHubRateLimiter` class/interface. Then each of the above bullet points would become a new rate limit tracking/enforcing class. All of them would need to be called before and after each query, and maintain their own configuration and calculated state. `GitHubRateLimiter` would provide the API and possibly helper functions to make that easier to do right. \n\nI think the basic API would be that the method call before a request is sent, would return an `Optional` and if more than one limiter returns a Duration the longest one is used. Or maybe return an optional record that includes a `reason` message and a duration, perhaps also a logLevel/severity. Make it easier to produce meaningful output. \n\n\n ", + "body": "I've been using the API to generate PRs for our main repository in a similar vein to dependabot, and would really like to be able to set those to auto-merge (which has been allowed in our repository):\n```java\nghPullRequest.requestAutoMerge();\n```\n\nClearly this isn't supported by the Java API, presumably because it's not supported by the GitHub REST API either. However it is supported by via a couple (oh, the irony!) of GraphQL API queries:\n\n```graphql\nquery GetPullRequestID {\n repository(name: \"$repo\", owner: \"$owner\") {\n pullRequest(number: \"$prnum\") {\n id\n }\n }\n}\n```\n\n```graphql\nmutation EnableAutoMergeOnPullRequest {\n enablePullRequestAutoMerge(input: {pullRequestId: \"$pullRequestID\", mergeMethod: MERGE}) {\n clientMutationId\n }\n}\n```\n\nRather than boiling the ocean by requesting general purpose public GraphQL support (#521), I wonder whether it might be acceptable to implement some low level GraphQL support that could be used internally to implement specific features not available in the REST API, such as enabling auto-merge on a PR. Perhaps in time this could become the basis for some general support but the immediate goal would be to enable access to APIs.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1975/reactions", - "total_count": 0, - "+1": 0, + "url": "https://api.github.com/repos/hub4j/github-api/issues/2039/reactions", + "total_count": 1, + "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, @@ -1067,54 +953,64 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1975/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2039/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2115", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2033", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/events", - "html_url": "https://github.com/hub4j/github-api/issues/2115", - "id": 3234980989, - "node_id": "I_kwDOAAlq-s7A0eR9", - "number": 2115, - "title": "Search API does not support advanced search will stop working on September 4, 2025", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2033/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2033/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2033/events", + "html_url": "https://github.com/hub4j/github-api/issues/2033", + "id": 2855685583, + "node_id": "I_kwDOAAlq-s6qNk3P", + "number": 2033, + "title": "Change GHRepository getIssue and getPullRequest to not mentiond ID and make it clear it is number", "user": { - "login": "donce", - "id": 1409983, - "node_id": "MDQ6VXNlcjE0MDk5ODM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1409983?v=4", + "login": "rnveach", + "id": 5427943, + "node_id": "MDQ6VXNlcjU0Mjc5NDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/donce", - "html_url": "https://github.com/donce", - "followers_url": "https://api.github.com/users/donce/followers", - "following_url": "https://api.github.com/users/donce/following{/other_user}", - "gists_url": "https://api.github.com/users/donce/gists{/gist_id}", - "starred_url": "https://api.github.com/users/donce/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/donce/subscriptions", - "organizations_url": "https://api.github.com/users/donce/orgs", - "repos_url": "https://api.github.com/users/donce/repos", - "events_url": "https://api.github.com/users/donce/events{/privacy}", - "received_events_url": "https://api.github.com/users/donce/received_events", + "url": "https://api.github.com/users/rnveach", + "html_url": "https://github.com/rnveach", + "followers_url": "https://api.github.com/users/rnveach/followers", + "following_url": "https://api.github.com/users/rnveach/following{/other_user}", + "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", + "organizations_url": "https://api.github.com/users/rnveach/orgs", + "repos_url": "https://api.github.com/users/rnveach/repos", + "events_url": "https://api.github.com/users/rnveach/events{/privacy}", + "received_events_url": "https://api.github.com/users/rnveach/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [], - "state": "open", + "labels": [ + { + "id": 265902919, + "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", + "name": "bug", + "color": "e11d21", + "default": true, + "description": null + } + ], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-07-16T08:24:12Z", - "updated_at": "2025-07-16T08:26:16Z", - "closed_at": null, - "author_association": "NONE", + "comments": 1, + "created_at": "2025-02-15T19:55:08Z", + "updated_at": "2025-02-25T17:58:50Z", + "closed_at": "2025-02-25T17:58:50Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1128,9 +1024,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "`GHPullRequestSearchBuilder` is built on the previous GitHub API, which does not use advanced search.\n\nOn September 4, 2025, advanced search will be enabled by default, but currently, it's not supported (from [docs](https://docs.github.com/en/rest/search/search?apiVersion=2022-11-28#search-issues-and-pull-requests)):\n\n>Warning\n>Notice: Search for issues and pull requests will be overridden by advanced search on September 4, 2025. You can read more about this change on [the GitHub blog](https://github.blog/changelog/2025-03-06-github-issues-projects-api-support-for-issues-advanced-search-and-more/).\n\nI think the github client should support that - as an opt-in now, but after September 4, it will be the only possible way.\n\n\n", + "body": "`GHRepository#getIssue` takes id as an `int`. Same with `getPullRequest`.\nhttps://github.com/hub4j/github-api/blob/e14ec3b3677760714cd096ad8157a3e6a6dded65/src/main/java/org/kohsuke/github/GHRepository.java#L358\nhttps://github.com/hub4j/github-api/blob/e14ec3b3677760714cd096ad8157a3e6a6dded65/src/main/java/org/kohsuke/github/GHRepository.java#L1509\n\n`GHIssue` and `GHPullRequest` which extend `GHObject` returns a `long` for an `id`.\nhttps://github.com/hub4j/github-api/blob/e14ec3b3677760714cd096ad8157a3e6a6dded65/src/main/java/org/kohsuke/github/GHObject.java#L32\n\nTo call either, with the original object requires you to downcast.\n```\n\t\t\tif (issue) {\n\t\t\t\tfinal GHIssue issue = repository.getIssue((int) item.getId());\n\t\t\t} else {\n\t\t\t\tfinal GHPullRequest pullRequest = repository.getPullRequest((int) item.getId());\n\t\t\t}\n```\n\nIt seems to me both should be updated to be a `long` to make everything consistent and not require down casting.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2115/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2033/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1141,39 +1037,39 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2115/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2033/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2102", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2032", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/events", - "html_url": "https://github.com/hub4j/github-api/issues/2102", - "id": 3072490567, - "node_id": "I_kwDOAAlq-s63InxH", - "number": 2102, - "title": "Cannot retrieve author from github release", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/events", + "html_url": "https://github.com/hub4j/github-api/issues/2032", + "id": 2854448657, + "node_id": "I_kwDOAAlq-s6qI24R", + "number": 2032, + "title": "Add more methods to QueryBuilder", "user": { - "login": "solonovamax", - "id": 46940694, - "node_id": "MDQ6VXNlcjQ2OTQwNjk0", - "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "login": "rnveach", + "id": 5427943, + "node_id": "MDQ6VXNlcjU0Mjc5NDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/solonovamax", - "html_url": "https://github.com/solonovamax", - "followers_url": "https://api.github.com/users/solonovamax/followers", - "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", - "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", - "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", - "organizations_url": "https://api.github.com/users/solonovamax/orgs", - "repos_url": "https://api.github.com/users/solonovamax/repos", - "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", - "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "url": "https://api.github.com/users/rnveach", + "html_url": "https://github.com/rnveach", + "followers_url": "https://api.github.com/users/rnveach/followers", + "following_url": "https://api.github.com/users/rnveach/following{/other_user}", + "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", + "organizations_url": "https://api.github.com/users/rnveach/orgs", + "repos_url": "https://api.github.com/users/rnveach/repos", + "events_url": "https://api.github.com/users/rnveach/events{/privacy}", + "received_events_url": "https://api.github.com/users/rnveach/received_events", "type": "User", "user_view_type": "public", "site_admin": false @@ -1187,17 +1083,26 @@ "color": "0e8a16", "default": true, "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-05-19T04:52:41Z", - "updated_at": "2025-05-24T16:47:22Z", - "closed_at": null, + "comments": 5, + "created_at": "2025-02-14T18:22:40Z", + "updated_at": "2026-02-10T07:58:25Z", + "closed_at": "2026-02-10T07:58:25Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, @@ -1212,9 +1117,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Describe the bug**\nAuthor (`GHUser`) is not included in the `GHRelease` object, even though it is present in the api response.\n\nUnsure if this behaviour was changed in some past api update.\n\n**Expected behavior**\nAuthor is included.\n\n**Additional context**\napi docs: https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#list-releases\n\nexample api response:\n```json\n[\n {\n \"url\": \"https://api.github.com/repos/hashicorp/terraform/releases/218598268\",\n \"assets_url\": \"https://api.github.com/repos/hashicorp/terraform/releases/218598268/assets\",\n \"upload_url\": \"https://uploads.github.com/repos/hashicorp/terraform/releases/218598268/assets{?name,label}\",\n \"html_url\": \"https://github.com/hashicorp/terraform/releases/tag/v1.12.0\",\n \"id\": 218598268,\n \"author\": {\n \"login\": \"hc-github-team-es-release-engineering\",\n \"id\": 82989873,\n \"node_id\": \"MDQ6VXNlcjgyOTg5ODcz\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/82989873?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/hc-github-team-es-release-engineering\",\n \"html_url\": \"https://github.com/hc-github-team-es-release-engineering\",\n \"followers_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/followers\",\n \"following_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/orgs\",\n \"repos_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/repos\",\n \"events_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/hc-github-team-es-release-engineering/received_events\",\n \"type\": \"User\",\n \"user_view_type\": \"public\",\n \"site_admin\": false\n },\n \"node_id\": \"RE_kwDOAQ6CpM4NB4t8\",\n \"tag_name\": \"v1.12.0\",\n \"target_commitish\": \"f9e9a59d7b5b48acf343e07fab768464bcdde4d7\",\n \"name\": \"v1.12.0\",\n \"draft\": false,\n \"prerelease\": false,\n \"created_at\": \"2025-05-14T14:11:25Z\",\n \"published_at\": \"2025-05-14T15:15:45Z\",\n \"assets\": [],\n \"tarball_url\": \"https://api.github.com/repos/hashicorp/terraform/tarball/v1.12.0\",\n \"zipball_url\": \"https://api.github.com/repos/hashicorp/terraform/zipball/v1.12.0\",\n \"body\": \"[truncated for brevity]\",\n \"reactions\": {\n \"url\": \"https://api.github.com/repos/hashicorp/terraform/releases/218598268/reactions\",\n \"total_count\": 11,\n \"+1\": 1,\n \"-1\": 0,\n \"laugh\": 0,\n \"hooray\": 0,\n \"confused\": 0,\n \"heart\": 0,\n \"rocket\": 10,\n \"eyes\": 0\n }\n }\n]\n```", + "body": "1)\n`GHPullRequestQueryBuilder` doesn't seem to support `pageSize(int)` but `GHIssueQueryBuilder` does.\n\nI don't know if there is a technical reason, but it would help to support repos with a large number of PRs. I didn't realize this was a possibility at first and took a long time to start iterating through issues.\n\n2)\n`GHIssueQueryBuilder` seems to still pull in PRs. Is it possible to add another method to the query to drop PRs from Issue queries and the same for Issues from PR queries. It would help the amount of data to transfer from the server if the server supported it.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2102/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2032/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1225,39 +1130,39 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2102/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2083", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2026", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/events", - "html_url": "https://github.com/hub4j/github-api/issues/2083", - "id": 2980993460, - "node_id": "I_kwDOAAlq-s6xrlm0", - "number": 2083, - "title": "OSGi Manifest - add maven plugin", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2026/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2026/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2026/events", + "html_url": "https://github.com/hub4j/github-api/issues/2026", + "id": 2843272749, + "node_id": "I_kwDOAAlq-s6peOYt", + "number": 2026, + "title": "GHIssueStateReason should add reopened", "user": { - "login": "stbischof", - "id": 33224746, - "node_id": "MDQ6VXNlcjMzMjI0NzQ2", - "avatar_url": "https://avatars.githubusercontent.com/u/33224746?v=4", + "login": "rnveach", + "id": 5427943, + "node_id": "MDQ6VXNlcjU0Mjc5NDM=", + "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/stbischof", - "html_url": "https://github.com/stbischof", - "followers_url": "https://api.github.com/users/stbischof/followers", - "following_url": "https://api.github.com/users/stbischof/following{/other_user}", - "gists_url": "https://api.github.com/users/stbischof/gists{/gist_id}", - "starred_url": "https://api.github.com/users/stbischof/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/stbischof/subscriptions", - "organizations_url": "https://api.github.com/users/stbischof/orgs", - "repos_url": "https://api.github.com/users/stbischof/repos", - "events_url": "https://api.github.com/users/stbischof/events{/privacy}", - "received_events_url": "https://api.github.com/users/stbischof/received_events", + "url": "https://api.github.com/users/rnveach", + "html_url": "https://github.com/rnveach", + "followers_url": "https://api.github.com/users/rnveach/followers", + "following_url": "https://api.github.com/users/rnveach/following{/other_user}", + "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", + "organizations_url": "https://api.github.com/users/rnveach/orgs", + "repos_url": "https://api.github.com/users/rnveach/repos", + "events_url": "https://api.github.com/users/rnveach/events{/privacy}", + "received_events_url": "https://api.github.com/users/rnveach/received_events", "type": "User", "user_view_type": "public", "site_admin": false @@ -1271,18 +1176,27 @@ "color": "0e8a16", "default": true, "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, + "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 1, - "created_at": "2025-04-08T21:30:08Z", - "updated_at": "2025-04-13T06:54:04Z", - "closed_at": null, - "author_association": "NONE", + "created_at": "2025-02-10T18:22:59Z", + "updated_at": "2025-02-14T17:51:34Z", + "closed_at": "2025-02-14T17:51:34Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1296,9 +1210,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "I would like to use this lib in an OSGi Framework. For this i would need some Metadata in the Manifest.MF.\n\nI would create a PR that adds this support using the bnd-maven-plugin.", + "body": "While going against a repository I am involved with, I recieved this message in the console:\n````\norg.kohsuke.github.internal.EnumUtils getEnumOrDefault\nWARNING: Unknown value reopened for enum class org.kohsuke.github.GHIssueStateReason, defaulting to UNKNOWN\n````\nWould be best if it was added for proper recognition.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2083/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2026/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1309,82 +1223,54 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2083/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2026/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2082", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2011", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/events", - "html_url": "https://github.com/hub4j/github-api/issues/2082", - "id": 2973118122, - "node_id": "I_kwDOAAlq-s6xNi6q", - "number": 2082, - "title": "Update Wiremock to v3 and JUnit5", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2011/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2011/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2011/events", + "html_url": "https://github.com/hub4j/github-api/issues/2011", + "id": 2796095271, + "node_id": "I_kwDOAAlq-s6mqQcn", + "number": 2011, + "title": "Support for /app/installation-requests", "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "login": "anujhydrabadi", + "id": 129152617, + "node_id": "U_kgDOB7K2aQ", + "avatar_url": "https://avatars.githubusercontent.com/u/129152617?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "url": "https://api.github.com/users/anujhydrabadi", + "html_url": "https://github.com/anujhydrabadi", + "followers_url": "https://api.github.com/users/anujhydrabadi/followers", + "following_url": "https://api.github.com/users/anujhydrabadi/following{/other_user}", + "gists_url": "https://api.github.com/users/anujhydrabadi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anujhydrabadi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anujhydrabadi/subscriptions", + "organizations_url": "https://api.github.com/users/anujhydrabadi/orgs", + "repos_url": "https://api.github.com/users/anujhydrabadi/repos", + "events_url": "https://api.github.com/users/anujhydrabadi/events{/privacy}", + "received_events_url": "https://api.github.com/users/anujhydrabadi/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - }, - { - "id": 1780165359, - "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", - "name": "breaking change", - "color": "b60205", - "default": false, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 0, - "created_at": "2025-04-04T18:38:07Z", - "updated_at": "2025-04-04T18:38:23Z", - "closed_at": null, - "author_association": "MEMBER", + "created_at": "2025-01-17T18:43:29Z", + "updated_at": "2025-01-21T06:57:01Z", + "closed_at": "2025-01-21T06:57:01Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1398,9 +1284,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "See \nhttps://wiremock.org/docs/junit-jupiter/\n\n GithubWireMockRule creates and manages multiple WireMockServers. Need to do the same for JUnit5 but not sure how composable the JUnit5 WireMock extension is. Might need to move to an abstract base test class that instantiates all the servers. \n\nI think v3 is Java 11+ only but if it isn't do that as well. ", + "body": "Request to support the following endpoint: https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#list-installation-requests-for-the-authenticated-app", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2082/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2011/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1411,64 +1297,54 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2082/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2011/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2076", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2008", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/events", - "html_url": "https://github.com/hub4j/github-api/issues/2076", - "id": 2957281274, - "node_id": "I_kwDOAAlq-s6wRIf6", - "number": 2076, - "title": "Inconsistent use of glob imports", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2008/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2008/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2008/events", + "html_url": "https://github.com/hub4j/github-api/issues/2008", + "id": 2788286884, + "node_id": "I_kwDOAAlq-s6mMeGk", + "number": 2008, + "title": "Website down", "user": { - "login": "solonovamax", - "id": 46940694, - "node_id": "MDQ6VXNlcjQ2OTQwNjk0", - "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "login": "wgorder-kr", + "id": 60753563, + "node_id": "MDQ6VXNlcjYwNzUzNTYz", + "avatar_url": "https://avatars.githubusercontent.com/u/60753563?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/solonovamax", - "html_url": "https://github.com/solonovamax", - "followers_url": "https://api.github.com/users/solonovamax/followers", - "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", - "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", - "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", - "organizations_url": "https://api.github.com/users/solonovamax/orgs", - "repos_url": "https://api.github.com/users/solonovamax/repos", - "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", - "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "url": "https://api.github.com/users/wgorder-kr", + "html_url": "https://github.com/wgorder-kr", + "followers_url": "https://api.github.com/users/wgorder-kr/followers", + "following_url": "https://api.github.com/users/wgorder-kr/following{/other_user}", + "gists_url": "https://api.github.com/users/wgorder-kr/gists{/gist_id}", + "starred_url": "https://api.github.com/users/wgorder-kr/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/wgorder-kr/subscriptions", + "organizations_url": "https://api.github.com/users/wgorder-kr/orgs", + "repos_url": "https://api.github.com/users/wgorder-kr/repos", + "events_url": "https://api.github.com/users/wgorder-kr/events{/privacy}", + "received_events_url": "https://api.github.com/users/wgorder-kr/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-03-28T21:25:41Z", - "updated_at": "2025-03-29T18:00:33Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", + "comments": 3, + "created_at": "2025-01-14T21:11:21Z", + "updated_at": "2025-02-07T19:44:32Z", + "closed_at": "2025-02-07T19:44:30Z", + "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1482,11 +1358,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "Some classes use glob imports, while others don't. The use of glob imports across files seems to be rather inconsistent.\n\nCurrently, with spotless, there doesn't seem to be a way to enforce using/disallowing glob imports, however there is an open issue for it: https://github.com/diffplug/spotless/issues/649.\nSome comments on the issue suggest using\n```xml\n\n Remove wildcard imports\n import\\s+(?:static\\s+)?[^\\*\\s]+\\*;(\\r\\n|\\r|\\n)\n $1\n\n```\nto remove all the glob imports, however this solution will simply remove them and won't replace them with the appropriate imports, causing the compile to fail.\n\nOpened due to discussion in #2074", + "body": "Can you get your website back up? I am new to the project but is a bit painful to have to look through the test cases for basics.\r\n\r\nIt looks like you were using github pages so not sure what happened.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2076/reactions", - "total_count": 1, - "+1": 1, + "url": "https://api.github.com/repos/hub4j/github-api/issues/2008/reactions", + "total_count": 5, + "+1": 5, "-1": 0, "laugh": 0, "hooray": 0, @@ -1495,64 +1371,73 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2076/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2008/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2075", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1993", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/events", - "html_url": "https://github.com/hub4j/github-api/issues/2075", - "id": 2957271743, - "node_id": "I_kwDOAAlq-s6wRGK_", - "number": 2075, - "title": "Inconsistent use of license header", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1993/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1993/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1993/events", + "html_url": "https://github.com/hub4j/github-api/issues/1993", + "id": 2715964451, + "node_id": "I_kwDOAAlq-s6h4lQj", + "number": 1993, + "title": "Feature Request: Fork Only Default Branch", "user": { - "login": "solonovamax", - "id": 46940694, - "node_id": "MDQ6VXNlcjQ2OTQwNjk0", - "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "login": "gounthar", + "id": 116569, + "node_id": "MDQ6VXNlcjExNjU2OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/116569?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/solonovamax", - "html_url": "https://github.com/solonovamax", - "followers_url": "https://api.github.com/users/solonovamax/followers", - "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", - "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", - "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", - "organizations_url": "https://api.github.com/users/solonovamax/orgs", - "repos_url": "https://api.github.com/users/solonovamax/repos", - "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", - "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "url": "https://api.github.com/users/gounthar", + "html_url": "https://github.com/gounthar", + "followers_url": "https://api.github.com/users/gounthar/followers", + "following_url": "https://api.github.com/users/gounthar/following{/other_user}", + "gists_url": "https://api.github.com/users/gounthar/gists{/gist_id}", + "starred_url": "https://api.github.com/users/gounthar/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/gounthar/subscriptions", + "organizations_url": "https://api.github.com/users/gounthar/orgs", + "repos_url": "https://api.github.com/users/gounthar/repos", + "events_url": "https://api.github.com/users/gounthar/events{/privacy}", + "received_events_url": "https://api.github.com/users/gounthar/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, + "id": 1662551322, + "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", + "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", + "name": "enhancement", + "color": "0e8a16", + "default": true, + "description": "" + }, + { + "id": 1991401619, + "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", + "name": "good first issue", + "color": "00FF00", + "default": true, "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-03-28T21:21:56Z", - "updated_at": "2025-03-29T18:00:16Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", + "comments": 8, + "created_at": "2024-12-03T20:58:22Z", + "updated_at": "2025-01-21T06:30:47Z", + "closed_at": "2025-01-21T06:30:46Z", + "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1566,9 +1451,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "There is an inconsistent use of the license header.\nCurrently, some files have a license header added, but others don't.\n\nSince you're using spotless, it can be used to enforce the license header:\nhttps://github.com/diffplug/spotless/tree/main/plugin-maven#license-header\n\nOpened due to discussion in #2074", + "body": "### What feature do you want to see added?\r\n\r\n## Current Situation\r\nWhen forking a repository on GitHub, our current process retrieves all branches from the original repository.\r\n\r\n## Issue\r\nThis approach may be inefficient and unnecessary for [our use case](https://github.com/jenkins-infra/plugin-modernizer-tool/issues/104).\r\n\r\n## Desired Outcome\r\nWe aim to fork only the default branch of the repository, as this is typically sufficient for our work.\r\n\r\n## GitHub GUI Option\r\nThe GitHub web interface provides an option to fork only the default branch (usually the main branch).\r\n\r\n\r\n## Benefits\r\n1. **Efficiency**: Reduces unnecessary data transfer and storage.\r\n2. **Simplicity**: Maintains a cleaner repository structure in our forks.\r\n3. **Focus**: Aligns with our primary need of working with the main branch.\r\n\r\n## Conclusion\r\nOptimizing our forking process to retrieve only the main branch will streamline our workflow and improve overall efficiency. This change aligns with best practices for managing forks when only the main branch is needed for development or analysis purposes.", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2075/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1993/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1579,64 +1464,54 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2075/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1993/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2058", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1985", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/events", - "html_url": "https://github.com/hub4j/github-api/issues/2058", - "id": 2913781594, - "node_id": "I_kwDOAAlq-s6trMda", - "number": 2058, - "title": "Enable hiding of comments", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1985/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1985/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1985/events", + "html_url": "https://github.com/hub4j/github-api/issues/1985", + "id": 2654357698, + "node_id": "I_kwDOAAlq-s6eNkjC", + "number": 1985, + "title": "/notifications interface return \"Unable to parse If-Modified-Since request header\"", "user": { - "login": "koppor", - "id": 1366654, - "node_id": "MDQ6VXNlcjEzNjY2NTQ=", - "avatar_url": "https://avatars.githubusercontent.com/u/1366654?v=4", + "login": "AsherSu", + "id": 59462016, + "node_id": "MDQ6VXNlcjU5NDYyMDE2", + "avatar_url": "https://avatars.githubusercontent.com/u/59462016?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/koppor", - "html_url": "https://github.com/koppor", - "followers_url": "https://api.github.com/users/koppor/followers", - "following_url": "https://api.github.com/users/koppor/following{/other_user}", - "gists_url": "https://api.github.com/users/koppor/gists{/gist_id}", - "starred_url": "https://api.github.com/users/koppor/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/koppor/subscriptions", - "organizations_url": "https://api.github.com/users/koppor/orgs", - "repos_url": "https://api.github.com/users/koppor/repos", - "events_url": "https://api.github.com/users/koppor/events{/privacy}", - "received_events_url": "https://api.github.com/users/koppor/received_events", + "url": "https://api.github.com/users/AsherSu", + "html_url": "https://github.com/AsherSu", + "followers_url": "https://api.github.com/users/AsherSu/followers", + "following_url": "https://api.github.com/users/AsherSu/following{/other_user}", + "gists_url": "https://api.github.com/users/AsherSu/gists{/gist_id}", + "starred_url": "https://api.github.com/users/AsherSu/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/AsherSu/subscriptions", + "organizations_url": "https://api.github.com/users/AsherSu/orgs", + "repos_url": "https://api.github.com/users/AsherSu/repos", + "events_url": "https://api.github.com/users/AsherSu/events{/privacy}", + "received_events_url": "https://api.github.com/users/AsherSu/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 4, - "created_at": "2025-03-12T12:20:51Z", - "updated_at": "2025-03-28T16:33:37Z", - "closed_at": null, - "author_association": "NONE", + "comments": 0, + "created_at": "2024-11-13T06:27:11Z", + "updated_at": "2024-11-21T03:58:01Z", + "closed_at": "2024-11-21T03:58:01Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1650,9 +1525,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "I have comment count 3, but the PR has much more: https://github.com/JabRef/jabref/pull/12710\n\nI \"deleted\" the other comments using `comment.delete()`. It seems this has no effect on the UI.\n\nIn the UI, one can use \"Hide\"\n\n![Image](https://github.com/user-attachments/assets/5522c8c3-0764-49bf-bcc1-86a472b24d06)\n\n![Image](https://github.com/user-attachments/assets/623772ef-30b7-4b04-bac7-abc174289702)\n\nShould be possible via API, too?", + "body": "**Describe the bug**\r\n/notifications interface return \"Unable to parse If-Modified-Since request header\"\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n```\r\ngithub.listNotifications()\r\n .nonBlocking(true)\r\n .participating(false)\r\n .read(true) \r\n .iterator()\r\n .next()\r\n .getRepository()\r\n .getOwnerName()\r\n```\r\n\r\n**Expected behavior**\r\nreturn owner\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: [e.g. iOS]\r\n - Browser [e.g. chrome, safari]\r\n - Version [e.g. 22]\r\n\r\n**Additional context**\r\n```\r\nCaused by: org.kohsuke.github.HttpException: {\"message\":\"Unable to parse If-Modified-Since request header. Please make sure value is in an acceptable format.\",\"documentation_url\":\"https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user\",\"status\":\"422\"}\r\n\tat org.kohsuke.github.GitHubConnectorResponseErrorHandler$1.onError(GitHubConnectorResponseErrorHandler.java:83)\r\n\tat org.kohsuke.github.GitHubClient.detectKnownErrors(GitHubClient.java:504)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:464)\r\n\tat org.kohsuke.github.GitHubPageIterator.fetch(GitHubPageIterator.java:146)\r\n\tat org.kohsuke.github.GitHubPageIterator.hasNext(GitHubPageIterator.java:93)\r\n\tat org.kohsuke.github.PagedIterator.fetch(PagedIterator.java:116)\r\n\tat org.kohsuke.github.PagedIterator.nextPageArray(PagedIterator.java:144)\r\n\tat org.kohsuke.github.PagedIterable.toArray(PagedIterable.java:85)\r\n\tat org.kohsuke.github.GitHubPageContentsIterable.toResponse(GitHubPageContentsIterable.java:70)\r\n\tat org.kohsuke.github.GHNotificationStream$1.fetch(GHNotificationStream.java:194)\r\n\t... 5 more\r\n```", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2058/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1985/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1663,64 +1538,54 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2058/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1985/timeline", "performed_via_github_app": null, - "state_reason": "reopened", + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1454", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1970", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/events", - "html_url": "https://github.com/hub4j/github-api/issues/1454", - "id": 1229507490, - "node_id": "I_kwDOAAlq-s5JSMui", - "number": 1454, - "title": "Please provide streaming for upload large content ", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1970/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1970/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1970/events", + "html_url": "https://github.com/hub4j/github-api/issues/1970", + "id": 2567834054, + "node_id": "I_kwDOAAlq-s6ZDgnG", + "number": 1970, + "title": "Cannot fork repository to personal account using GitHub app", "user": { - "login": "Vampire", - "id": 325196, - "node_id": "MDQ6VXNlcjMyNTE5Ng==", - "avatar_url": "https://avatars.githubusercontent.com/u/325196?v=4", + "login": "jonesbusy", + "id": 825750, + "node_id": "MDQ6VXNlcjgyNTc1MA==", + "avatar_url": "https://avatars.githubusercontent.com/u/825750?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/Vampire", - "html_url": "https://github.com/Vampire", - "followers_url": "https://api.github.com/users/Vampire/followers", - "following_url": "https://api.github.com/users/Vampire/following{/other_user}", - "gists_url": "https://api.github.com/users/Vampire/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Vampire/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Vampire/subscriptions", - "organizations_url": "https://api.github.com/users/Vampire/orgs", - "repos_url": "https://api.github.com/users/Vampire/repos", - "events_url": "https://api.github.com/users/Vampire/events{/privacy}", - "received_events_url": "https://api.github.com/users/Vampire/received_events", + "url": "https://api.github.com/users/jonesbusy", + "html_url": "https://github.com/jonesbusy", + "followers_url": "https://api.github.com/users/jonesbusy/followers", + "following_url": "https://api.github.com/users/jonesbusy/following{/other_user}", + "gists_url": "https://api.github.com/users/jonesbusy/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jonesbusy/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jonesbusy/subscriptions", + "organizations_url": "https://api.github.com/users/jonesbusy/orgs", + "repos_url": "https://api.github.com/users/jonesbusy/repos", + "events_url": "https://api.github.com/users/jonesbusy/events{/privacy}", + "received_events_url": "https://api.github.com/users/jonesbusy/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 7, - "created_at": "2022-05-09T10:34:22Z", - "updated_at": "2025-03-26T18:56:07Z", - "closed_at": null, - "author_association": "NONE", + "comments": 0, + "created_at": "2024-10-05T10:31:49Z", + "updated_at": "2024-10-06T04:36:20Z", + "closed_at": "2024-10-06T04:36:20Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1734,11 +1599,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "I have a Gradle build where I build a Docker image tar file which has a size of 166 MiB.\r\nI use the GitHub publish Gradle plugin and tried to upload this Docker image as asset to the release.\r\nThis consistently resulted in an `OutOfMemoryError`.\r\n\r\nThe GitHub publish Gradle plugin under the hood uses this library.\r\nAnd I also easily reproduced it stand-alone.\r\nIn version 1.1xx, you use an `HttpsUrlConnection` without setting it to fixed-length streaming or chunking mode and thus the JRE uses a byte-array output stream to colllect the whole body in RAM to determine the size up-front.\r\nIn version 1.3xx many things changed, but now you use your `GitHubRequest.Builder#with(java.io.InputStream)` method to load the whole file into RAM using `IOUtils.toByteArray`.\r\n\r\nSo at different places both load the whole file into RAM instead of properly streaming it.\r\nPlease support at least giving the size to methods like `uploadAsset` so that the size can be set as HTTP header but the content be streamed, or if GitHub supports it maybe even using chunked mode additionally if no explicit size was given.\r\n\r\nThe problem can pretty easily be reproduced using:\r\n```java\r\ngithub\r\n .getRepository(\"my/repository\")\r\n .listReleases()\r\n .iterator()\r\n .next()\r\n .uploadAsset(\"foo.tar.gz\", new FileInputStream(\"file/that/is/too/large/for/RAM\"), \"application/octet-stream\")\r\n```", + "body": "**Describe the bug**\r\n\r\nI'm using GitHub app to authenticate and I need to fork repository to my personal account. The app has the required access.\r\n\r\nBut due to call on `getMyself()` at https://github.com/hub4j/github-api/blob/768c7154bdb84e775dfafea6b0cb27fa57d835c7/src/main/java/org/kohsuke/github/GHRepository.java#L1467 it's not possible to use public GHRepository fork() throws IOException`\r\n\r\nI would suggest to create a new API GHRepository forkTo(GHUser user) allowing to fork a repository to a given user using GitHub app authentication.\r\n\r\nWould you agree ?\r\n\r\n**To Reproduce**\r\n\r\n- Create GitHub app. Grant permisssion to create/fork repositorx\r\n- Try to use fork()\r\n\r\nSeen on https://github.com/jenkinsci/plugin-modernizer-tool/pull/295\r\n\r\n**Expected behavior**\r\n\r\nI think it's the normal behavior. When calling the fork() the fork is done but fail on the getMyself call\r\n\r\nThat's why I suggest to create a new public method `forkTo(GHUser user)` similar to `forkTo(GHOrganisation org)`\r\n\r\n**Desktop (please complete the following information):**\r\n\r\nAll\r\n\r\n**Additional context**\r\n\r\nI can submit a proposal\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1454/reactions", - "total_count": 0, - "+1": 0, + "url": "https://api.github.com/repos/hub4j/github-api/issues/1970/reactions", + "total_count": 1, + "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, @@ -1747,63 +1612,53 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1454/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1970/timeline", "performed_via_github_app": null, - "state_reason": "reopened", + "state_reason": "not_planned", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1967", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1963", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/events", - "html_url": "https://github.com/hub4j/github-api/issues/1967", - "id": 2564089274, - "node_id": "I_kwDOAAlq-s6Y1OW6", - "number": 1967, - "title": "Branch rename is missing", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1963/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1963/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1963/events", + "html_url": "https://github.com/hub4j/github-api/issues/1963", + "id": 2562978157, + "node_id": "I_kwDOAAlq-s6Yw_Ft", + "number": 1963, + "title": "org.kohsuke.github.HttpException for getOrganization", "user": { - "login": "sbouchexbellomie-Philips", - "id": 182072604, - "node_id": "U_kgDOCto1HA", - "avatar_url": "https://avatars.githubusercontent.com/u/182072604?v=4", + "login": "bisegni", + "id": 3001087, + "node_id": "MDQ6VXNlcjMwMDEwODc=", + "avatar_url": "https://avatars.githubusercontent.com/u/3001087?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/sbouchexbellomie-Philips", - "html_url": "https://github.com/sbouchexbellomie-Philips", - "followers_url": "https://api.github.com/users/sbouchexbellomie-Philips/followers", - "following_url": "https://api.github.com/users/sbouchexbellomie-Philips/following{/other_user}", - "gists_url": "https://api.github.com/users/sbouchexbellomie-Philips/gists{/gist_id}", - "starred_url": "https://api.github.com/users/sbouchexbellomie-Philips/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/sbouchexbellomie-Philips/subscriptions", - "organizations_url": "https://api.github.com/users/sbouchexbellomie-Philips/orgs", - "repos_url": "https://api.github.com/users/sbouchexbellomie-Philips/repos", - "events_url": "https://api.github.com/users/sbouchexbellomie-Philips/events{/privacy}", - "received_events_url": "https://api.github.com/users/sbouchexbellomie-Philips/received_events", + "url": "https://api.github.com/users/bisegni", + "html_url": "https://github.com/bisegni", + "followers_url": "https://api.github.com/users/bisegni/followers", + "following_url": "https://api.github.com/users/bisegni/following{/other_user}", + "gists_url": "https://api.github.com/users/bisegni/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bisegni/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bisegni/subscriptions", + "organizations_url": "https://api.github.com/users/bisegni/orgs", + "repos_url": "https://api.github.com/users/bisegni/repos", + "events_url": "https://api.github.com/users/bisegni/events{/privacy}", + "received_events_url": "https://api.github.com/users/bisegni/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2024-10-03T13:35:26Z", - "updated_at": "2025-03-23T07:25:04Z", - "closed_at": null, + "comments": 1, + "created_at": "2024-10-03T02:26:33Z", + "updated_at": "2024-10-03T02:39:37Z", + "closed_at": "2024-10-03T02:39:37Z", "author_association": "NONE", "type": null, "active_lock_reason": null, @@ -1818,9 +1673,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "Ability to rename a branch is missing\r\n\r\nGHBranch.rename should be added", + "body": "**Describe the bug**\r\nI have a code that worked to get organization information using github application installed into this application. Not it s not working anymore getting the error below:\r\nCaused by: org.kohsuke.github.HttpException: {\"message\":\"Bad credentials\",\"documentation_url\":\"https://docs.github.com/rest\",\"status\":\"401\"}\r\n\tat org.kohsuke.github.GitHubConnectorResponseErrorHandler$1.onError(GitHubConnectorResponseErrorHandler.java:83)\r\n\tat org.kohsuke.github.GitHubClient.detectKnownErrors(GitHubClient.java:504)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:464)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:427)\r\n\tat org.kohsuke.github.Requester.fetch(Requester.java:85)\r\n\tat org.kohsuke.github.GitHub.getOrganization(GitHub.java:640)\r\n\t\r\nusing github app key, id and installation id i can authenticate and get app installation information but when i try to get the organization i got error, below the installation with the information loaded:\r\n```\r\nappInstallation = {GHAppInstallation@18308} \"GHAppInstallation@eb1306c[accessTokenUrl=https://api.github.com/app/installations/55541328/access_tokens,appId=1014645,events=[],htmlUrl=https://github.com/organizations/ad-build-test/settings/installations/55541328,permissions={members=WRITE, contents=WRITE, metadata=READ, pull_requests=WRITE, repository_hooks=WRITE, team_discussions=WRITE, organization_plan=READ, organization_hooks=WRITE, organization_events=READ, organization_secrets=WRITE, organization_projects=ADMIN, organization_codespaces=WRITE, organization_custom_roles=WRITE, organization_user_blocking=WRITE, organization_administration=WRITE, organization_custom_org_roles=WRITE, organization_actions_variables=WRITE, organization_custom_properties=ADMIN, organization_codespaces_secrets=WRITE, organization_dependabot_secrets=WRITE, organization_codespaces_settings=WRITE, organization_self_hosted_runners=WRITE, organization_announcement_banners=WRITE, organization_personal_access_tokens=WRITE, organization_copilot_seat_managemen\"\r\n account = {GHUser@18330} \"GHUser@5ee60e32[suspendedAt=,bio=,blog=,company=,email=,followers=0,following=0,hireable=false,location=,login=ad-build-test,name=,type=Organization,createdAt=,id=168671263,nodeId=O_kgDOCg24Hw,updatedAt=,url=https://api.github.com/users/ad-build-test]\"\r\n accessTokenUrl = \"https://api.github.com/app/installations/55541328/access_tokens\"\r\n repositoriesUrl = \"https://api.github.com/installation/repositories\"\r\n appId = 1014645\r\n targetId = 168671263\r\n targetType = {GHTargetType@18333} \"ORGANIZATION\"\r\n permissions = {LinkedHashMap@18334} size = 26\r\n events = {ArrayList@18335} size = 0\r\n singleFileName = null\r\n repositorySelection = {GHRepositorySelection@18336} \"ALL\"\r\n htmlUrl = \"https://github.com/organizations/ad-build-test/settings/installations/55541328\"\r\n suspendedAt = null\r\n suspendedBy = null\r\n responseHeaderFields = {Collections$UnmodifiableMap@18338} size = 19\r\n url = null\r\n id = 55541328\r\n nodeId = null\r\n createdAt = \"2024-10-03T00:29:22.000Z\"\r\n updatedAt = \"2024-10-03T02:20:09.000Z\"\r\n root = {GitHub@18341} \r\n```\r\n\r\ni have gave all the authorization to ad-build-test organization but i receive always the same error, to note that the same code worked month ago. Any sugestion?\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1967/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1963/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1831,64 +1686,73 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1967/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1963/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1965", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1957", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/events", - "html_url": "https://github.com/hub4j/github-api/issues/1965", - "id": 2563920009, - "node_id": "I_kwDOAAlq-s6Y0lCJ", - "number": 1965, - "title": "Deployment deletion is missing", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1957/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1957/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1957/events", + "html_url": "https://github.com/hub4j/github-api/issues/1957", + "id": 2553307162, + "node_id": "I_kwDOAAlq-s6YMGAa", + "number": 1957, + "title": "GHRepository.getPullRequests(GHIssueState) not deprecated but removed from 2.x", "user": { - "login": "sbouchexbellomie-Philips", - "id": 182072604, - "node_id": "U_kgDOCto1HA", - "avatar_url": "https://avatars.githubusercontent.com/u/182072604?v=4", + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/sbouchexbellomie-Philips", - "html_url": "https://github.com/sbouchexbellomie-Philips", - "followers_url": "https://api.github.com/users/sbouchexbellomie-Philips/followers", - "following_url": "https://api.github.com/users/sbouchexbellomie-Philips/following{/other_user}", - "gists_url": "https://api.github.com/users/sbouchexbellomie-Philips/gists{/gist_id}", - "starred_url": "https://api.github.com/users/sbouchexbellomie-Philips/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/sbouchexbellomie-Philips/subscriptions", - "organizations_url": "https://api.github.com/users/sbouchexbellomie-Philips/orgs", - "repos_url": "https://api.github.com/users/sbouchexbellomie-Philips/repos", - "events_url": "https://api.github.com/users/sbouchexbellomie-Philips/events{/privacy}", - "received_events_url": "https://api.github.com/users/sbouchexbellomie-Philips/received_events", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, + "id": 1664647346, + "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", + "url": "https://api.github.com/repos/hub4j/github-api/labels/task", + "name": "task", + "color": "bfdadc", + "default": false, + "description": "" + }, + { + "id": 1780165359, + "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", + "name": "breaking change", + "color": "b60205", + "default": false, "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2024-10-03T12:23:11Z", - "updated_at": "2025-03-23T07:24:47Z", - "closed_at": null, - "author_association": "NONE", + "comments": 1, + "created_at": "2024-09-27T16:21:56Z", + "updated_at": "2025-03-18T21:07:41Z", + "closed_at": "2025-03-18T21:07:41Z", + "author_association": "MEMBER", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -1902,9 +1766,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "Ability to delete a deployment is missing\r\n\r\nGHDeployment.delete should be added\r\n", + "body": "https://github.com/hub4j/github-api/pull/1935/files#r1778850947 - Anchor\r\n\r\n\r\n@ihrigb \r\nNoted that `GHRepository.getPullRequests(GHIssueState)` was not marked as Deprecated but was removed in `2.0-alpha-1`. \r\n\r\nDid a search on usages:\r\nhttps://github.com/search?q=org%3Ajenkinsci+getPullRequests+path%3A%2F%5Esrc%5C%2Fmain%5C%2Fjava%5C%2F%2F+org.kohsuke.github&type=code\r\n\r\nIt looks like there's at least one usage in the wild, and since it is in Jenkins it will cause breaks for some time to come. \r\nhttps://github.com/jenkinsci/ghprb-plugin/blob/master/src/main/java/org/jenkinsci/plugins/ghprb/GhprbRepository.java#L145\r\n\r\nThere's a similar one for listPullRequests(). \r\n\r\nOptions:\r\n* Bring some methods back as bridge methods in 2.0 to not break Jenkins plugins. \r\n* Change to 1.x that converts methods removed in 2.x to bridge methods - this would force projects to change their code in their next release while maintaining binary compatibility. Maybe only convert some methods. This might be a way to push some additional changes into 2.x.\r\n\r\nOn the other hand this is a 2.0 release, some incompatibility is to be expected. \r\n\r\n\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1965/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1957/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1915,63 +1779,53 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1965/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1957/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2041", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1951", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/events", - "html_url": "https://github.com/hub4j/github-api/issues/2041", - "id": 2871292068, - "node_id": "I_kwDOAAlq-s6rJHCk", - "number": 2041, - "title": "should fromCredentials not be public?", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1951/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1951/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1951/events", + "html_url": "https://github.com/hub4j/github-api/issues/1951", + "id": 2545520390, + "node_id": "I_kwDOAAlq-s6XuY8G", + "number": 1951, + "title": "Sharing of this Github API ", "user": { - "login": "maxandersen", - "id": 54129, - "node_id": "MDQ6VXNlcjU0MTI5", - "avatar_url": "https://avatars.githubusercontent.com/u/54129?v=4", + "login": "aeonSolutions", + "id": 7936768, + "node_id": "MDQ6VXNlcjc5MzY3Njg=", + "avatar_url": "https://avatars.githubusercontent.com/u/7936768?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/maxandersen", - "html_url": "https://github.com/maxandersen", - "followers_url": "https://api.github.com/users/maxandersen/followers", - "following_url": "https://api.github.com/users/maxandersen/following{/other_user}", - "gists_url": "https://api.github.com/users/maxandersen/gists{/gist_id}", - "starred_url": "https://api.github.com/users/maxandersen/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/maxandersen/subscriptions", - "organizations_url": "https://api.github.com/users/maxandersen/orgs", - "repos_url": "https://api.github.com/users/maxandersen/repos", - "events_url": "https://api.github.com/users/maxandersen/events{/privacy}", - "received_events_url": "https://api.github.com/users/maxandersen/received_events", + "url": "https://api.github.com/users/aeonSolutions", + "html_url": "https://github.com/aeonSolutions", + "followers_url": "https://api.github.com/users/aeonSolutions/followers", + "following_url": "https://api.github.com/users/aeonSolutions/following{/other_user}", + "gists_url": "https://api.github.com/users/aeonSolutions/gists{/gist_id}", + "starred_url": "https://api.github.com/users/aeonSolutions/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/aeonSolutions/subscriptions", + "organizations_url": "https://api.github.com/users/aeonSolutions/orgs", + "repos_url": "https://api.github.com/users/aeonSolutions/repos", + "events_url": "https://api.github.com/users/aeonSolutions/events{/privacy}", + "received_events_url": "https://api.github.com/users/aeonSolutions/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 5, - "created_at": "2025-02-22T20:16:12Z", - "updated_at": "2025-03-23T07:21:59Z", - "closed_at": null, + "comments": 1, + "created_at": "2024-09-24T14:07:14Z", + "updated_at": "2025-01-02T23:27:51Z", + "closed_at": "2025-01-02T23:27:51Z", "author_association": "NONE", "type": null, "active_lock_reason": null, @@ -1986,11 +1840,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Describe the bug**\nGithubBuilder.fromCredentials is not public and given the auth provider field is not public it is not possible to implement the \"honor .github and env\" manually.\n\nThus should that method not be public? \n\n", + "body": "Hi there @bernd @vbehar @kozmic @jkrall @derfred \r\ngreat work! 😍\r\n\r\nI'm sharing your project on my own C++ project for Github API\r\nhttps://github.com/aeonSolutions/AeonLabs-GitHub-API-C-library\r\n\r\n👍", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2041/reactions", - "total_count": 0, - "+1": 0, + "url": "https://api.github.com/repos/hub4j/github-api/issues/1951/reactions", + "total_count": 2, + "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, @@ -1999,64 +1853,64 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2041/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1951/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1798", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1926", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/events", - "html_url": "https://github.com/hub4j/github-api/issues/1798", - "id": 2147359719, - "node_id": "I_kwDOAAlq-s5__hvn", - "number": 1798, - "title": "Maven central moving to new publishing model and plugin", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1926/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1926/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1926/events", + "html_url": "https://github.com/hub4j/github-api/issues/1926", + "id": 2516758945, + "node_id": "I_kwDOAAlq-s6WArGh", + "number": 1926, + "title": "Getting timeout while connecting to Github API", "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "login": "Mohazinkhan", + "id": 97169593, + "node_id": "U_kgDOBcqwuQ", + "avatar_url": "https://avatars.githubusercontent.com/u/97169593?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "url": "https://api.github.com/users/Mohazinkhan", + "html_url": "https://github.com/Mohazinkhan", + "followers_url": "https://api.github.com/users/Mohazinkhan/followers", + "following_url": "https://api.github.com/users/Mohazinkhan/following{/other_user}", + "gists_url": "https://api.github.com/users/Mohazinkhan/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Mohazinkhan/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Mohazinkhan/subscriptions", + "organizations_url": "https://api.github.com/users/Mohazinkhan/orgs", + "repos_url": "https://api.github.com/users/Mohazinkhan/repos", + "events_url": "https://api.github.com/users/Mohazinkhan/events{/privacy}", + "received_events_url": "https://api.github.com/users/Mohazinkhan/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", + "id": 1686290078, + "node_id": "MDU6TGFiZWwxNjg2MjkwMDc4", + "url": "https://api.github.com/repos/hub4j/github-api/labels/external", + "name": "external", + "color": "a0a0a0", "default": false, "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 2, - "created_at": "2024-02-21T17:52:31Z", - "updated_at": "2025-03-23T06:52:23Z", - "closed_at": null, - "author_association": "MEMBER", + "comments": 14, + "created_at": "2024-09-10T15:16:24Z", + "updated_at": "2025-03-23T07:23:44Z", + "closed_at": "2025-03-23T07:23:42Z", + "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -2070,9 +1924,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "It looks like Sonatype is moving to a new model for publishing: \r\nhttps://github.com/sonatype/nexus-public/issues/110#issuecomment-1900500381\r\n\r\nThe project may need to re-register or do some other updates to work in the new system:\r\nhttps://central.sonatype.org/register/central-portal/\r\nhttps://central.sonatype.org/publish/publish-portal-maven/\r\n\r\nIt is still in preview, so this is not urgent. I've started work on this but don't have time to finish it now: \r\nhttps://github.com/hub4j/github-api/tree/feature/new-maven-central-publishing", + "body": "I have configured a Github App for Jenkins and I am running a Global seed job which would connect to the Github API and retrieve all the repositories in the Organization. Whenever it tries to authenticate to the Github API and retrieve the list of repositories it fails with timeout and the following error is displayed,\r\n```\r\nCaused: org.kohsuke.github.HttpException: Server returned HTTP response code: -1, message: 'null' for URL: [https://api.github.com/orgs/{orgname}]\r\n\r\nStacktrace: \r\n\r\nhudson.remoting.ProxyException: java.net.SocketTimeoutException: Connect timed out\r\n\tat java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:551)\r\n\tat java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:602)\r\n\tat java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)\r\n\tat java.base/java.net.Socket.connect(Socket.java:633)\r\n\tat java.base/sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:304)\r\n\tat java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:178)\r\n\tat java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:533)\r\n\tat java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:638)\r\n\tat java.base/sun.net.www.protocol.https.HttpsClient.(HttpsClient.java:266)\r\n\tat java.base/sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:380)\r\n\tat java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:193)\r\n\tat java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1241)\r\n\tat java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1127)\r\n\tat java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:179)\r\n\tat java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1686)\r\n\tat java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1610)\r\n\tat java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:529)\r\n\tat java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:308)\r\n\tat org.kohsuke.github.GitHubHttpUrlConnectionClient.getResponseInfo(GitHubHttpUrlConnectionClient.java:69)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:400)\r\nAlso: hudson.remoting.ProxyException: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: fa952780-e9a2-4351-b74d-d3851ac026e3\r\nCaused: hudson.remoting.ProxyException: org.kohsuke.github.HttpException: Server returned HTTP response code: -1, message: 'null' for URL: https://api.github.com/orgs/\r\n\tat org.kohsuke.github.GitHubClient.interpretApiError(GitHubClient.java:500)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:420)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:363)\r\n\tat org.kohsuke.github.Requester.fetch(Requester.java:74)\r\n\tat org.kohsuke.github.GitHub.getOrganization(GitHub.java:505)\r\n\tat org.kohsuke.github.GitHub$getOrganization.call(Unknown Source)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)\r\n\tat com..jenkins.jobdsl.GithubFetcher.(GithubFetcher.groovy:19)\r\n\tat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\r\n\tat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)\r\n\tat java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\r\n\tat java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)\r\n\tat java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)\r\n\tat org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83)\r\n\tat org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:77)\r\n\tat org.codehaus.groovy.runtime.callsite.ConstructorSite.callConstructor(ConstructorSite.java:45)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:238)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:258)\r\n\tat uc_generator.generateUcRepos(uc_generator.groovy:38)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\r\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)\r\n\tat org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)\r\n\tat org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:161)\r\n\tat uc_generator.run(uc_generator.groovy:8)\r\n\tat uc_generator$run.call(Unknown Source)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)\r\n\tat uc_generator$run.call(Unknown Source)\r\n\tat PluginClassLoader for job-dsl//javaposse.jobdsl.dsl.AbstractDslScriptLoader.runScript(AbstractDslScriptLoader.groovy:138)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\r\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)\r\n\tat org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)\r\n\tat org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)\r\n\tat org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:64)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:169)\r\n\tat PluginClassLoader for job-dsl//javaposse.jobdsl.dsl.AbstractDslScriptLoader.runScriptEngine(AbstractDslScriptLoader.groovy:108)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\r\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)\r\n\tat org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)\r\n\tat groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)\r\n\tat org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:352)\r\n\tat groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)\r\n\tat org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:68)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:177)\r\n\tat PluginClassLoader for job-dsl//javaposse.jobdsl.dsl.AbstractDslScriptLoader$_runScripts_closure1.doCall(AbstractDslScriptLoader.groovy:61)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\r\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)\r\n\tat org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)\r\n\tat groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)\r\n\tat org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)\r\n\tat groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)\r\n\tat groovy.lang.Closure.call(Closure.java:420)\r\n\tat groovy.lang.Closure.call(Closure.java:436)\r\n\tat org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2125)\r\n\tat org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2110)\r\n\tat org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2163)\r\n\tat org.codehaus.groovy.runtime.dgm$165.invoke(Unknown Source)\r\n\tat org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:274)\r\n\tat org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)\r\n\tat PluginClassLoader for job-dsl//javaposse.jobdsl.dsl.AbstractDslScriptLoader.runScripts(AbstractDslScriptLoader.groovy:46)\r\n\tat PluginClassLoader for job-dsl//javaposse.jobdsl.plugin.ExecuteDslScripts.perform(ExecuteDslScripts.java:363)\r\n\tat jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123)\r\n\tat PluginClassLoader for workflow-basic-steps//org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:101)\r\n\tat PluginClassLoader for workflow-basic-steps//org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:71)\r\n\tat PluginClassLoader for workflow-step-api//org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)\r\n\tat java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)\r\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)\r\n\tat java.base/java.lang.Thread.run(Thread.java:840)\r\n```", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1798/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1926/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -2083,64 +1937,64 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1798/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1926/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "not_planned", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/521", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1924", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/521/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/521/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/521/events", - "html_url": "https://github.com/hub4j/github-api/issues/521", - "id": 447748493, - "node_id": "MDU6SXNzdWU0NDc3NDg0OTM=", - "number": 521, - "title": "GitHub v4 GraphQL API support", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1924/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1924/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1924/events", + "html_url": "https://github.com/hub4j/github-api/issues/1924", + "id": 2514785107, + "node_id": "I_kwDOAAlq-s6V5JNT", + "number": 1924, + "title": "[Vulnerable dependency upgrade] commons-io", "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "login": "dev-2-controltowerai", + "id": 167620350, + "node_id": "U_kgDOCf2u_g", + "avatar_url": "https://avatars.githubusercontent.com/u/167620350?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", + "url": "https://api.github.com/users/dev-2-controltowerai", + "html_url": "https://github.com/dev-2-controltowerai", + "followers_url": "https://api.github.com/users/dev-2-controltowerai/followers", + "following_url": "https://api.github.com/users/dev-2-controltowerai/following{/other_user}", + "gists_url": "https://api.github.com/users/dev-2-controltowerai/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dev-2-controltowerai/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dev-2-controltowerai/subscriptions", + "organizations_url": "https://api.github.com/users/dev-2-controltowerai/orgs", + "repos_url": "https://api.github.com/users/dev-2-controltowerai/repos", + "events_url": "https://api.github.com/users/dev-2-controltowerai/events{/privacy}", + "received_events_url": "https://api.github.com/users/dev-2-controltowerai/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", "default": false, - "description": "" + "description": "Pull requests that update a dependency file" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 11, - "created_at": "2019-05-23T16:02:20Z", - "updated_at": "2025-03-19T17:33:15Z", - "closed_at": null, - "author_association": "MEMBER", + "comments": 0, + "created_at": "2024-09-09T19:51:06Z", + "updated_at": "2024-09-10T16:02:13Z", + "closed_at": "2024-09-10T16:02:13Z", + "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -2154,9 +2008,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "The v4 API provides a much more customizable API based on GraphQL. It is out of scope for this library to provide a generalized API the fully leverages the power of GraphQL, but having some way to construct queries for trees of items would be useful. \r\n\r\nhttps://developer.github.com/v4/", + "body": "Apache commons io package is outdated with a bunch of vulnerabilities. Can someone update it?", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/521/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1924/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -2167,63 +2021,53 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/521/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1924/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2060", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1915", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/events", - "html_url": "https://github.com/hub4j/github-api/issues/2060", - "id": 2922558598, - "node_id": "I_kwDOAAlq-s6uMrSG", - "number": 2060, - "title": "Issues with getMergeCommitSha", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1915/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1915/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1915/events", + "html_url": "https://github.com/hub4j/github-api/issues/1915", + "id": 2492552073, + "node_id": "I_kwDOAAlq-s6UkVOJ", + "number": 1915, + "title": "Support /repos/{owner}/{repo}/vulnerability-alerts", "user": { - "login": "BradPlayerZero", - "id": 172313252, - "node_id": "U_kgDOCkVKpA", - "avatar_url": "https://avatars.githubusercontent.com/u/172313252?v=4", + "login": "ranma2913", + "id": 4295880, + "node_id": "MDQ6VXNlcjQyOTU4ODA=", + "avatar_url": "https://avatars.githubusercontent.com/u/4295880?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/BradPlayerZero", - "html_url": "https://github.com/BradPlayerZero", - "followers_url": "https://api.github.com/users/BradPlayerZero/followers", - "following_url": "https://api.github.com/users/BradPlayerZero/following{/other_user}", - "gists_url": "https://api.github.com/users/BradPlayerZero/gists{/gist_id}", - "starred_url": "https://api.github.com/users/BradPlayerZero/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/BradPlayerZero/subscriptions", - "organizations_url": "https://api.github.com/users/BradPlayerZero/orgs", - "repos_url": "https://api.github.com/users/BradPlayerZero/repos", - "events_url": "https://api.github.com/users/BradPlayerZero/events{/privacy}", - "received_events_url": "https://api.github.com/users/BradPlayerZero/received_events", + "url": "https://api.github.com/users/ranma2913", + "html_url": "https://github.com/ranma2913", + "followers_url": "https://api.github.com/users/ranma2913/followers", + "following_url": "https://api.github.com/users/ranma2913/following{/other_user}", + "gists_url": "https://api.github.com/users/ranma2913/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ranma2913/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ranma2913/subscriptions", + "organizations_url": "https://api.github.com/users/ranma2913/orgs", + "repos_url": "https://api.github.com/users/ranma2913/repos", + "events_url": "https://api.github.com/users/ranma2913/events{/privacy}", + "received_events_url": "https://api.github.com/users/ranma2913/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 1, - "created_at": "2025-03-15T21:26:52Z", - "updated_at": "2025-03-18T21:06:41Z", - "closed_at": null, + "comments": 0, + "created_at": "2024-08-28T16:35:38Z", + "updated_at": "2024-09-03T20:31:59Z", + "closed_at": "2024-09-03T20:31:59Z", "author_association": "NONE", "type": null, "active_lock_reason": null, @@ -2238,9 +2082,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "Two fixes needed for getMergeCommitSha:\n\n /**\n * See GitHub blog post\n *\n * @return the merge commit sha\n * @throws IOException\n * the io exception\n */\n public String getMergeCommitSha() throws IOException {\n populate();\n return merge_commit_sha;\n }\n\nFirst, GitHub has reversed themselves on deprecating merge_commit_id, so the comment should be removed.\n\nSecond, merge_commit_id is part of the list pull request API (get /repos/{owner}/{repo}/pulls), and required, so it should not call populate().\n\n\n", + "body": "Support Endpoints:\r\n\r\n- https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#check-if-vulnerability-alerts-are-enabled-for-a-repository\r\n- https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#enable-vulnerability-alerts\r\n- https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#disable-vulnerability-alerts", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2060/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1915/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -2251,39 +2095,39 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2060/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1915/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2061", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1909", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/events", - "html_url": "https://github.com/hub4j/github-api/issues/2061", - "id": 2923132207, - "node_id": "I_kwDOAAlq-s6uO3Uv", - "number": 2061, - "title": "`GHIssue#isPullRequest` is false despite being a PR", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1909/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1909/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1909/events", + "html_url": "https://github.com/hub4j/github-api/issues/1909", + "id": 2472357939, + "node_id": "I_kwDOAAlq-s6TXTAz", + "number": 1909, + "title": "AbuseLimitHandler does not handle scenarios where the local time is not synchronized with GitHub server time", "user": { - "login": "Haarolean", - "id": 1494347, - "node_id": "MDQ6VXNlcjE0OTQzNDc=", - "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "login": "bitwiseman", + "id": 1958953, + "node_id": "MDQ6VXNlcjE5NTg5NTM=", + "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/Haarolean", - "html_url": "https://github.com/Haarolean", - "followers_url": "https://api.github.com/users/Haarolean/followers", - "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", - "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", - "organizations_url": "https://api.github.com/users/Haarolean/orgs", - "repos_url": "https://api.github.com/users/Haarolean/repos", - "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", - "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "url": "https://api.github.com/users/bitwiseman", + "html_url": "https://github.com/bitwiseman", + "followers_url": "https://api.github.com/users/bitwiseman/followers", + "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", + "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", + "organizations_url": "https://api.github.com/users/bitwiseman/orgs", + "repos_url": "https://api.github.com/users/bitwiseman/repos", + "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", + "received_events_url": "https://api.github.com/users/bitwiseman/received_events", "type": "User", "user_view_type": "public", "site_admin": false @@ -2299,16 +2143,16 @@ "description": null } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-03-16T15:23:51Z", - "updated_at": "2025-03-17T10:37:01Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", + "comments": 2, + "created_at": "2024-08-19T03:08:21Z", + "updated_at": "2024-10-14T17:19:05Z", + "closed_at": "2024-10-14T17:19:04Z", + "author_association": "MEMBER", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -2322,9 +2166,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Describe the bug**\n`isPullRequest` in GHIssue returns false due to `pull_request == null` condition. The PR object was acquired via `payload.getPullRequest()` method of `GHEventPayload.PullRequest` class.\n\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Get an instance of `GHEventPayload.PullRequest` event\n2. Get the pr entity via `payload.getPullRequest()`\n3. Observe that despite object being an instance of `GHPullRequest` the return value of `isPullRequest` method is false.\n\n**Expected behavior**\nexpected true", + "body": "From [this comment](https://github.com/hub4j/github-api/pull/1895/files#r1704397808) on #1895 : \r\n\r\n> GitHubClient has a method to get Date (or Instant).\r\n> https://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GitHubClient.java#L916\r\n> \r\n> Unfortunately, diff from local machine time is not reliable. The local machine may not be synchronized with the server time. We have to use the diff from the response time.\r\n> https://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GHRateLimit.java#L543-L571\r\n\r\n> However, this PR is a huge step forward and I'd rather have this less than perfect code added than wait for the next release.\r\n\r\nThis is the code that need updating:\r\n\r\nhttps://github.com/hub4j/github-api/blob/314917eabf9762e0d62d52f3ae68bc9ff6ba7ed5/src/main/java/org/kohsuke/github/AbuseLimitHandler.java#L116-L122", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2061/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1909/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -2335,63 +2179,63 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2061/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1909/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2062", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1908", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/events", - "html_url": "https://github.com/hub4j/github-api/issues/2062", - "id": 2923159729, - "node_id": "I_kwDOAAlq-s6uO-Cx", - "number": 2062, - "title": "`branch.getProtection()` fails with an exception for ruleset-protected branch", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1908/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1908/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1908/events", + "html_url": "https://github.com/hub4j/github-api/issues/1908", + "id": 2467567361, + "node_id": "I_kwDOAAlq-s6TFBcB", + "number": 1908, + "title": "Enable github-api to support GraalVM native images", "user": { - "login": "Haarolean", - "id": 1494347, - "node_id": "MDQ6VXNlcjE0OTQzNDc=", - "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", + "login": "klopfdreh", + "id": 980773, + "node_id": "MDQ6VXNlcjk4MDc3Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/980773?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/Haarolean", - "html_url": "https://github.com/Haarolean", - "followers_url": "https://api.github.com/users/Haarolean/followers", - "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", - "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", - "organizations_url": "https://api.github.com/users/Haarolean/orgs", - "repos_url": "https://api.github.com/users/Haarolean/repos", - "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", - "received_events_url": "https://api.github.com/users/Haarolean/received_events", + "url": "https://api.github.com/users/klopfdreh", + "html_url": "https://github.com/klopfdreh", + "followers_url": "https://api.github.com/users/klopfdreh/followers", + "following_url": "https://api.github.com/users/klopfdreh/following{/other_user}", + "gists_url": "https://api.github.com/users/klopfdreh/gists{/gist_id}", + "starred_url": "https://api.github.com/users/klopfdreh/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/klopfdreh/subscriptions", + "organizations_url": "https://api.github.com/users/klopfdreh/orgs", + "repos_url": "https://api.github.com/users/klopfdreh/repos", + "events_url": "https://api.github.com/users/klopfdreh/events{/privacy}", + "received_events_url": "https://api.github.com/users/klopfdreh/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null + "id": 265902955, + "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", + "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", + "name": "new feature", + "color": "f4cc53", + "default": false, + "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-03-16T16:11:09Z", - "updated_at": "2025-03-17T10:34:17Z", - "closed_at": null, + "comments": 18, + "created_at": "2024-08-15T07:31:23Z", + "updated_at": "2024-09-05T16:24:05Z", + "closed_at": "2024-09-05T16:24:05Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, @@ -2406,9 +2250,9 @@ "blocking": 0, "total_blocking": 0 }, - "body": "**Describe the bug**\nIf a branch (`GHBranch`) is protected via rulesets rather than classic (deprecated?) branch protection rules, `GHBranch#isProtected()` returns `true`, but `GHBranch#getProtection` desintegrates with the following exception:\n```\norg.kohsuke.github.GHFileNotFoundException: https://api.github.com/repos/ZooPets/kapybro-demo-dev/branches/main/protection {\"message\":\"Branch not protected\",\"documentation_url\":\"https://docs.github.com/rest/branches/branch-protection#get-branch-protection\",\"status\":\"404\"}\n\tat org.kohsuke.github.GitHubClient.interpretApiError(GitHubClient.java:661) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:480) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:427) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.Requester.fetch(Requester.java:85) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GHBranch.getProtection(GHBranch.java:112) ~[github-api-unbridged-1.318.jar:na]\n//omitted\nCaused by: java.io.FileNotFoundException: https://api.github.com/repos/ZooPets/kapybro-demo-dev/branches/main/protection\n\tat org.kohsuke.github.GitHubConnectorResponseErrorHandler$1.onError(GitHubConnectorResponseErrorHandler.java:60) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.detectKnownErrors(GitHubClient.java:504) ~[github-api-unbridged-1.318.jar:na]\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:464) ~[github-api-unbridged-1.318.jar:na]\n\t... 179 common frames omitted\n```\n\nMost likely, `GHBranch#isProtected()` will be true for both protection methods, so we need a way to tell them apart without conflating two different methods and later calling wrong endpoints.\nPerhaps a temp solution could be introduced until #1811 is implemented.", + "body": "**Describe the bug**\r\nDue to some reflections you encounter errors during the runtime when `github-api` is used in a native image.\r\n\r\nExample\r\n```plain\r\nat java.base@22.0.1/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)\\nCaused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `org.kohsuke.github.GHRepository`: cannot deserialize from Object value (no delegate- or property-based Creator): this appears to be a native image, in which case you may need to configure reflection for the class that is to be deserialized\\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 2]\r\n```\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Build an application with Spring Boot Native and `github-api`\r\n2. Perform a `native-image` build\r\n3. Run the native application\r\n\r\n**Expected behavior**\r\n`github-api` should be used in a native image without any issues\r\n\r\n**Desktop (please complete the following information):**\r\n N/A\r\n\r\n**Additional context**\r\nYou could add `META-INF/native-image///reflect-config.json` and describe the reflection usage:\r\n\r\nExample:\r\n```json\r\n[\r\n {\r\n \"name\": \"org.kohsuke.github.GHRepository\",\r\n \r\n }\r\n]\r\n```\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2062/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1908/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -2419,39 +2263,39 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2062/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1908/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1811", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1905", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/events", - "html_url": "https://github.com/hub4j/github-api/issues/1811", - "id": 2177274983, - "node_id": "I_kwDOAAlq-s6BxpRn", - "number": 1811, - "title": "Implement API for retrieving and managing rulesets on a repository", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1905/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1905/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1905/events", + "html_url": "https://github.com/hub4j/github-api/issues/1905", + "id": 2449641453, + "node_id": "I_kwDOAAlq-s6SAo_t", + "number": 1905, + "title": "List Anonymous Repository Contributors", "user": { - "login": "FHannes", - "id": 915760, - "node_id": "MDQ6VXNlcjkxNTc2MA==", - "avatar_url": "https://avatars.githubusercontent.com/u/915760?v=4", + "login": "augustd", + "id": 1258191, + "node_id": "MDQ6VXNlcjEyNTgxOTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/1258191?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/FHannes", - "html_url": "https://github.com/FHannes", - "followers_url": "https://api.github.com/users/FHannes/followers", - "following_url": "https://api.github.com/users/FHannes/following{/other_user}", - "gists_url": "https://api.github.com/users/FHannes/gists{/gist_id}", - "starred_url": "https://api.github.com/users/FHannes/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/FHannes/subscriptions", - "organizations_url": "https://api.github.com/users/FHannes/orgs", - "repos_url": "https://api.github.com/users/FHannes/repos", - "events_url": "https://api.github.com/users/FHannes/events{/privacy}", - "received_events_url": "https://api.github.com/users/FHannes/received_events", + "url": "https://api.github.com/users/augustd", + "html_url": "https://github.com/augustd", + "followers_url": "https://api.github.com/users/augustd/followers", + "following_url": "https://api.github.com/users/augustd/following{/other_user}", + "gists_url": "https://api.github.com/users/augustd/gists{/gist_id}", + "starred_url": "https://api.github.com/users/augustd/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/augustd/subscriptions", + "organizations_url": "https://api.github.com/users/augustd/orgs", + "repos_url": "https://api.github.com/users/augustd/repos", + "events_url": "https://api.github.com/users/augustd/events{/privacy}", + "received_events_url": "https://api.github.com/users/augustd/received_events", "type": "User", "user_view_type": "public", "site_admin": false @@ -2467,16 +2311,16 @@ "description": "" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 3, - "created_at": "2024-03-09T15:42:36Z", - "updated_at": "2025-03-16T16:04:55Z", - "closed_at": null, - "author_association": "NONE", + "comments": 2, + "created_at": "2024-08-05T23:31:16Z", + "updated_at": "2025-01-06T17:08:10Z", + "closed_at": "2025-01-06T17:08:10Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -2490,11 +2334,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "As far as I can tell, the library currently supports managing branch protection, but not [rulesets](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets). The use of rulesets has some advantages over using branch protection [as listed in the documentation](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets#about-rulesets-protected-branches-and-protected-tags), so it might be useful to add support for them.\r\nAPI reference: https://docs.github.com/en/rest/repos/rules?apiVersion=2022-11-28", + "body": "The Github API docs (https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#list-repository-contributors) say that there is am `anon=true` parameter to add to `/repos/{owner}/{repo}/contributors` in order to fetch anonymous contributions. \r\n\r\nThere does not seem to be an option in the API to add that parameter. Is there any way to fetch anonymous contributors? ", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1811/reactions", - "total_count": 1, - "+1": 1, + "url": "https://api.github.com/repos/hub4j/github-api/issues/1905/reactions", + "total_count": 0, + "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, @@ -2503,64 +2347,54 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1811/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1905/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2028", + "url": "https://api.github.com/repos/hub4j/github-api/issues/1852", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/events", - "html_url": "https://github.com/hub4j/github-api/issues/2028", - "id": 2843436852, - "node_id": "I_kwDOAAlq-s6pe2c0", - "number": 2028, - "title": "GHMilestone throws NPE on null state", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1852/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1852/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1852/events", + "html_url": "https://github.com/hub4j/github-api/issues/1852", + "id": 2344425004, + "node_id": "I_kwDOAAlq-s6LvRYs", + "number": 1852, + "title": "Can't Iterate over ghRepo.listCollaborators()", "user": { - "login": "rnveach", - "id": 5427943, - "node_id": "MDQ6VXNlcjU0Mjc5NDM=", - "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", + "login": "MouadhKh", + "id": 50799773, + "node_id": "MDQ6VXNlcjUwNzk5Nzcz", + "avatar_url": "https://avatars.githubusercontent.com/u/50799773?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/rnveach", - "html_url": "https://github.com/rnveach", - "followers_url": "https://api.github.com/users/rnveach/followers", - "following_url": "https://api.github.com/users/rnveach/following{/other_user}", - "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", - "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", - "organizations_url": "https://api.github.com/users/rnveach/orgs", - "repos_url": "https://api.github.com/users/rnveach/repos", - "events_url": "https://api.github.com/users/rnveach/events{/privacy}", - "received_events_url": "https://api.github.com/users/rnveach/received_events", + "url": "https://api.github.com/users/MouadhKh", + "html_url": "https://github.com/MouadhKh", + "followers_url": "https://api.github.com/users/MouadhKh/followers", + "following_url": "https://api.github.com/users/MouadhKh/following{/other_user}", + "gists_url": "https://api.github.com/users/MouadhKh/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MouadhKh/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MouadhKh/subscriptions", + "organizations_url": "https://api.github.com/users/MouadhKh/orgs", + "repos_url": "https://api.github.com/users/MouadhKh/repos", + "events_url": "https://api.github.com/users/MouadhKh/events{/privacy}", + "received_events_url": "https://api.github.com/users/MouadhKh/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 6, - "created_at": "2025-02-10T19:35:34Z", - "updated_at": "2025-02-27T18:05:14Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", + "comments": 0, + "created_at": "2024-06-10T17:06:18Z", + "updated_at": "2024-06-11T19:17:11Z", + "closed_at": "2024-06-11T19:16:21Z", + "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { @@ -2574,11 +2408,11 @@ "blocking": 0, "total_blocking": 0 }, - "body": "The following method is not `null` safe:\nhttps://github.com/hub4j/github-api/blob/055638069ce8299629225be7f39395b16d4fe839/src/main/java/org/kohsuke/github/GHMilestone.java#L137-L138\n\nWhenever it is called to get the state of the milestone, and it (`state` field) is `null`, it will throw a `NullPointerException`.\n\nThere is no other method in this class to ascertain the value of this before calling the method. The field is private. Programmers are forced to wrap this in a try/catch in the case it is null.\n\nIt would ease handling this call if it had a `null` check and returned `null` if there is no state.", + "body": "**Description**\r\nAccessing single collaborators by iterating over `ghRepo.listCollaborators()` is not possible for some repositories (all public)\r\nThe detailed message looks : \r\n`Server returned HTTP response code: -1, message: 'null' for URL: www.reposUrl.com`\r\n\r\n**To Reproduce**\r\nIt doesn't matter which token I use ( classic token with all permissions/Fine-grained token with all permissions). For some repositories, it is not possible to go over the collaborators.\r\nThe result of the following curl varies depending on the used token(classic/new)\r\n`curl -L \\\r\n -H \"Accept: application/vnd.github+json\" \\\r\n -H \"Authorization: Bearer TOKEN_PLACEHOLDER\" \\\r\n -H \"X-GitHub-Api-Version: 2022-11-28\" \\\r\n URL`\r\n\r\n**Classic PAT** --> Must have push access to view repository collaborators.\r\n**Fine grained token** --> Resource not accessible by personal access token\r\n\r\nThe first displayed error message allude to missing permissions, which I think is wrong since the repository is publicly accessible\r\nThe second error message is more confusing and contradicts the documentation(https://docs.github.com/rest/collaborators/collaborators#list-repository-collaborators)\r\n\r\n**Expected behavior**\r\nCan access collaborators of all public repositories \r\n\r\n**Additional context**\r\nThe given repository is a special case because it is archived(should be readable nevertheless). But this problem persists with other non-archived repositories aswell", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2028/reactions", - "total_count": 1, - "+1": 1, + "url": "https://api.github.com/repos/hub4j/github-api/issues/1852/reactions", + "total_count": 0, + "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, @@ -2587,9 +2421,9 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2028/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1852/timeline", "performed_via_github_app": null, - "state_reason": null, + "state_reason": "completed", "score": 1 } ] diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/4-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/4-search_issues.json deleted file mode 100644 index e317840101..0000000000 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/4-search_issues.json +++ /dev/null @@ -1,2652 +0,0 @@ -{ - "total_count": 164, - "incomplete_results": false, - "items": [ - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2037", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2037/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2037/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2037/events", - "html_url": "https://github.com/hub4j/github-api/issues/2037", - "id": 2858704844, - "node_id": "I_kwDOAAlq-s6qZF_M", - "number": 2037, - "title": "GHIssueStateReason should add reopened", - "user": { - "login": "rnveach", - "id": 5427943, - "node_id": "MDQ6VXNlcjU0Mjc5NDM=", - "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/rnveach", - "html_url": "https://github.com/rnveach", - "followers_url": "https://api.github.com/users/rnveach/followers", - "following_url": "https://api.github.com/users/rnveach/following{/other_user}", - "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", - "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", - "organizations_url": "https://api.github.com/users/rnveach/orgs", - "repos_url": "https://api.github.com/users/rnveach/repos", - "events_url": "https://api.github.com/users/rnveach/events{/privacy}", - "received_events_url": "https://api.github.com/users/rnveach/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2025-02-17T20:07:48Z", - "updated_at": "2025-02-24T17:32:27Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "https://github.com/hub4j/github-api/blob/e14ec3b3677760714cd096ad8157a3e6a6dded65/src/main/java/org/kohsuke/github/GHIssueStateReason.java\n\nhttps://docs.github.com/en/rest/issues/issues?apiVersion=2022-11-28#update-an-issue\n\n> state_reason string or null\n> Can be one of: completed, not_planned, reopened, null \n\n`reopened` is supported and should be added.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2037/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2037/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2035", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2035/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2035/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2035/events", - "html_url": "https://github.com/hub4j/github-api/issues/2035", - "id": 2858255655, - "node_id": "I_kwDOAAlq-s6qXYUn", - "number": 2035, - "title": "GHCommitPointer throws NPE on null repository", - "user": { - "login": "rnveach", - "id": 5427943, - "node_id": "MDQ6VXNlcjU0Mjc5NDM=", - "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/rnveach", - "html_url": "https://github.com/rnveach", - "followers_url": "https://api.github.com/users/rnveach/followers", - "following_url": "https://api.github.com/users/rnveach/following{/other_user}", - "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", - "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", - "organizations_url": "https://api.github.com/users/rnveach/orgs", - "repos_url": "https://api.github.com/users/rnveach/repos", - "events_url": "https://api.github.com/users/rnveach/events{/privacy}", - "received_events_url": "https://api.github.com/users/rnveach/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2025-02-17T16:04:48Z", - "updated_at": "2025-02-24T17:32:12Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\n\nI receive an NPE on `GHCommitPointer#getCommit` because `getRepository()` returns `null`.\n\nI assume `getRepository()` should always be populated as I need a `GHRepository` to even get the initial PR/issue in the first place.\n\n**To Reproduce**\n\nWhile scanning https://github.com/checkstyle/checkstyle/pulls , I pick up PR 1.\nI call `GHPullRequest#getHead()` and get the `GHCommitPointer`.\nI call `GHCommitPointer#getCommit()` and receive an NPE.\n`getRepository()` returns `null`.\n\n**Expected behavior**\n\nNo NPE.\n\n**Additional context**\n\n`GHPullRequest#getBase()` doesn't seem to have this issue.\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2035/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2035/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2032", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/events", - "html_url": "https://github.com/hub4j/github-api/issues/2032", - "id": 2854448657, - "node_id": "I_kwDOAAlq-s6qI24R", - "number": 2032, - "title": "Add more methods to QueryBuilder", - "user": { - "login": "rnveach", - "id": 5427943, - "node_id": "MDQ6VXNlcjU0Mjc5NDM=", - "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/rnveach", - "html_url": "https://github.com/rnveach", - "followers_url": "https://api.github.com/users/rnveach/followers", - "following_url": "https://api.github.com/users/rnveach/following{/other_user}", - "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", - "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", - "organizations_url": "https://api.github.com/users/rnveach/orgs", - "repos_url": "https://api.github.com/users/rnveach/repos", - "events_url": "https://api.github.com/users/rnveach/events{/privacy}", - "received_events_url": "https://api.github.com/users/rnveach/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 4, - "created_at": "2025-02-14T18:22:40Z", - "updated_at": "2025-02-18T05:58:24Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "1)\n`GHPullRequestQueryBuilder` doesn't seem to support `pageSize(int)` but `GHIssueQueryBuilder` does.\n\nI don't know if there is a technical reason, but it would help to support repos with a large number of PRs. I didn't realize this was a possibility at first and took a long time to start iterating through issues.\n\n2)\n`GHIssueQueryBuilder` seems to still pull in PRs. Is it possible to add another method to the query to drop PRs from Issue queries and the same for Issues from PR queries. It would help the amount of data to transfer from the server if the server supported it.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2032/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2032/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1997", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1997/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1997/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1997/events", - "html_url": "https://github.com/hub4j/github-api/issues/1997", - "id": 2745371503, - "node_id": "I_kwDOAAlq-s6jowtv", - "number": 1997, - "title": "enhancement: add app support for GHBranchProtectionBuilder Restrictions", - "user": { - "login": "akt-penklera", - "id": 182738397, - "node_id": "U_kgDOCuRd3Q", - "avatar_url": "https://avatars.githubusercontent.com/u/182738397?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/akt-penklera", - "html_url": "https://github.com/akt-penklera", - "followers_url": "https://api.github.com/users/akt-penklera/followers", - "following_url": "https://api.github.com/users/akt-penklera/following{/other_user}", - "gists_url": "https://api.github.com/users/akt-penklera/gists{/gist_id}", - "starred_url": "https://api.github.com/users/akt-penklera/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/akt-penklera/subscriptions", - "organizations_url": "https://api.github.com/users/akt-penklera/orgs", - "repos_url": "https://api.github.com/users/akt-penklera/repos", - "events_url": "https://api.github.com/users/akt-penklera/events{/privacy}", - "received_events_url": "https://api.github.com/users/akt-penklera/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2024-12-17T16:12:55Z", - "updated_at": "2025-02-13T22:53:44Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Hi,\r\nAs it stands the api offers, restrictions for users, teams, but app slugs cannot be added to the definition.\r\nWould it be possible to add this?\r\nI checked and currently other endpoints for gihub apps do exist.\r\n\r\nSorry if this is out of place, and thank you for an awsome project.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1997/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1997/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2007", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2007/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2007/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2007/events", - "html_url": "https://github.com/hub4j/github-api/issues/2007", - "id": 2788128469, - "node_id": "I_kwDOAAlq-s6mL3bV", - "number": 2007, - "title": "GHRespository.getTemplateRepository() should call populate() if null", - "user": { - "login": "kkroner8451", - "id": 14809736, - "node_id": "MDQ6VXNlcjE0ODA5NzM2", - "avatar_url": "https://avatars.githubusercontent.com/u/14809736?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/kkroner8451", - "html_url": "https://github.com/kkroner8451", - "followers_url": "https://api.github.com/users/kkroner8451/followers", - "following_url": "https://api.github.com/users/kkroner8451/following{/other_user}", - "gists_url": "https://api.github.com/users/kkroner8451/gists{/gist_id}", - "starred_url": "https://api.github.com/users/kkroner8451/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/kkroner8451/subscriptions", - "organizations_url": "https://api.github.com/users/kkroner8451/orgs", - "repos_url": "https://api.github.com/users/kkroner8451/repos", - "events_url": "https://api.github.com/users/kkroner8451/events{/privacy}", - "received_events_url": "https://api.github.com/users/kkroner8451/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2025-01-14T19:32:50Z", - "updated_at": "2025-02-13T22:53:01Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nA clear and concise description of what the bug is.\r\n\r\nWhen calling the GitHub API to get a [list of repositories](https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#list-organization-repositories) the `template_repository` field is not included in the response. Thus if using this library to get a list of repositories (i.e. `GHOrganization.listRepositories()`) that field will always be null when mapped onto the GHRepository object constructed as introduced in [PR#1817](https://github.com/hub4j/github-api/pull/1817/). Under a different proposal I saw [PR#1579](https://github.com/hub4j/github-api/pull/1579) it had a check \r\n\r\n```java\r\n if this.template_repository == null \r\n populate()\r\n```\r\nThis has its own performance concerns as there is no flag that `populate()` isn't called more than once which would happen if this was not a child of a template repository and the `getTemplateRepository()` method was called multiple times. All works as expected when getting a single repository via `GitHub.getRepository()` as the[ GitHub API](https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#get-a-repository) includes the template_repository field in that case.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Go to '...'\r\n2. Click on '....'\r\n3. Scroll down to '....'\r\n4. See error\r\n\r\n```java\r\nGHRepositories[] repos = gitHub.getOrganization(\"SAMPLE\").listRepositories(10);\r\nfor (GHRepository repo : repos){\r\n if (repo.getTemplateRepository() != null) {\r\n // BUG: This will never hit as underlying template_repository field isn't ever populated when using list vs single get methods\r\n doSomethingWithTemplate();\r\n }\r\n}\r\n```\r\n\r\n**Expected behavior**\r\nA clear and concise description of what you expected to happen.\r\n\r\nI expect the GHRepository.getTemplateRepository() to return the value assuming the repo is a child of a template regardless of if it was originally constructed by a method to get the single repo (working) versus getting a list of repositories (not working) and believe making the delayed load `populate()` call as seen in other places is an established behavior that would be expected.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: [e.g. iOS]\r\n - Browser [e.g. chrome, safari]\r\n - Version [e.g. 22]\r\n\r\n**Additional context**\r\nAdd any other context about the problem here.\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2007/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2007/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2013", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2013/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2013/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2013/events", - "html_url": "https://github.com/hub4j/github-api/issues/2013", - "id": 2797786767, - "node_id": "I_kwDOAAlq-s6mwtaP", - "number": 2013, - "title": "`GHPullRequestReviewComment` should extend `GHIssueComment`", - "user": { - "login": "Haarolean", - "id": 1494347, - "node_id": "MDQ6VXNlcjE0OTQzNDc=", - "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Haarolean", - "html_url": "https://github.com/Haarolean", - "followers_url": "https://api.github.com/users/Haarolean/followers", - "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", - "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", - "organizations_url": "https://api.github.com/users/Haarolean/orgs", - "repos_url": "https://api.github.com/users/Haarolean/repos", - "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", - "received_events_url": "https://api.github.com/users/Haarolean/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2025-01-19T19:18:39Z", - "updated_at": "2025-01-21T06:39:37Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "It seems that `GHPullRequestReviewComment` should extend `GHIssueComment`, the same way `GHPullRequest` extends `GHIssue`. ", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2013/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2013/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2004", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2004/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2004/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2004/events", - "html_url": "https://github.com/hub4j/github-api/issues/2004", - "id": 2766043832, - "node_id": "I_kwDOAAlq-s6k3nq4", - "number": 2004, - "title": "Issues to get all the retryAttemps of an workflow", - "user": { - "login": "ananta-code", - "id": 30434147, - "node_id": "MDQ6VXNlcjMwNDM0MTQ3", - "avatar_url": "https://avatars.githubusercontent.com/u/30434147?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/ananta-code", - "html_url": "https://github.com/ananta-code", - "followers_url": "https://api.github.com/users/ananta-code/followers", - "following_url": "https://api.github.com/users/ananta-code/following{/other_user}", - "gists_url": "https://api.github.com/users/ananta-code/gists{/gist_id}", - "starred_url": "https://api.github.com/users/ananta-code/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/ananta-code/subscriptions", - "organizations_url": "https://api.github.com/users/ananta-code/orgs", - "repos_url": "https://api.github.com/users/ananta-code/repos", - "events_url": "https://api.github.com/users/ananta-code/events{/privacy}", - "received_events_url": "https://api.github.com/users/ananta-code/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1686292366, - "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", - "name": "more information needed", - "color": "9ce1ed", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2025-01-02T13:33:43Z", - "updated_at": "2025-01-06T14:22:07Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nI have a runner and which was retried 5 times and each runner has almost 25 jobs so when i use \r\n repository.getWorkflowRun(runnerId/workflow_id), it is returning the ghWorkFlowRunner but newWorkFlowRun.listJobs().toList() doesn't have all the retried job info\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Create a PR\r\n2. Cancel the first runner\r\n3. Retry the runner again and again\r\n4. newWorkFlowRun.listJobs().toList() should contain all the jobs irrespective of the retry attemps\r\n\r\n**Expected behavior**\r\nnewWorkFlowRun.listJobs().toList() is only returning most recent retried jobs\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: iOS\r\n - Version 1.326\r\n\r\n**Additional context**\r\nIs there any way to get the runner specific to a runner id and retryAttempt.\r\nI have monorepo so repository.queryWorkflowRuns().list() and then filter by runnerId and retry attempt is not feasible for me since we have more than 3000 runners getting executed everyday.\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2004/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2004/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1973", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1973/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1973/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1973/events", - "html_url": "https://github.com/hub4j/github-api/issues/1973", - "id": 2586640889, - "node_id": "I_kwDOAAlq-s6aLQH5", - "number": 1973, - "title": "Extract `parseWaitTime` method to shared utility", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 3, - "created_at": "2024-10-14T17:28:56Z", - "updated_at": "2025-01-02T22:47:12Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "`GitHubAbuseLimitHander` and `GitHubRateLimitHandler` both implement `parseWaitTime`. Most of the code is the same and could also be useful to consumers of this library. \r\n\r\nExtract `parseWaitTime` to a utility class and consider exposing as `public`. ", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1973/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1973/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1964", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1964/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1964/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1964/events", - "html_url": "https://github.com/hub4j/github-api/issues/1964", - "id": 2563506909, - "node_id": "I_kwDOAAlq-s6YzALd", - "number": 1964, - "title": "allowSquashMerge : \"Default commit message\" parameters are missing", - "user": { - "login": "sbouchexbellomie-Philips", - "id": 182072604, - "node_id": "U_kgDOCto1HA", - "avatar_url": "https://avatars.githubusercontent.com/u/182072604?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/sbouchexbellomie-Philips", - "html_url": "https://github.com/sbouchexbellomie-Philips", - "followers_url": "https://api.github.com/users/sbouchexbellomie-Philips/followers", - "following_url": "https://api.github.com/users/sbouchexbellomie-Philips/following{/other_user}", - "gists_url": "https://api.github.com/users/sbouchexbellomie-Philips/gists{/gist_id}", - "starred_url": "https://api.github.com/users/sbouchexbellomie-Philips/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/sbouchexbellomie-Philips/subscriptions", - "organizations_url": "https://api.github.com/users/sbouchexbellomie-Philips/orgs", - "repos_url": "https://api.github.com/users/sbouchexbellomie-Philips/repos", - "events_url": "https://api.github.com/users/sbouchexbellomie-Philips/events{/privacy}", - "received_events_url": "https://api.github.com/users/sbouchexbellomie-Philips/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 3, - "created_at": "2024-10-03T09:04:14Z", - "updated_at": "2025-01-02T22:46:06Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "allowSquashMerge is only accepting an \"enabled\" parameter whereas the GitHub API is gving the ability to set the \"Default commit message\" (default message, PR title, PR title + commit details, PR title + description)\r\n\r\nAny plan to add it ? Need a PR ?", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1964/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1964/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1899", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1899/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1899/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1899/events", - "html_url": "https://github.com/hub4j/github-api/issues/1899", - "id": 2435118334, - "node_id": "I_kwDOAAlq-s6RJPT-", - "number": 1899, - "title": "Missing endpoint for adding a repo to an app installation", - "user": { - "login": "deliaconstantinescu", - "id": 175299067, - "node_id": "U_kgDOCnLZ-w", - "avatar_url": "https://avatars.githubusercontent.com/u/175299067?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/deliaconstantinescu", - "html_url": "https://github.com/deliaconstantinescu", - "followers_url": "https://api.github.com/users/deliaconstantinescu/followers", - "following_url": "https://api.github.com/users/deliaconstantinescu/following{/other_user}", - "gists_url": "https://api.github.com/users/deliaconstantinescu/gists{/gist_id}", - "starred_url": "https://api.github.com/users/deliaconstantinescu/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/deliaconstantinescu/subscriptions", - "organizations_url": "https://api.github.com/users/deliaconstantinescu/orgs", - "repos_url": "https://api.github.com/users/deliaconstantinescu/repos", - "events_url": "https://api.github.com/users/deliaconstantinescu/events{/privacy}", - "received_events_url": "https://api.github.com/users/deliaconstantinescu/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2024-07-29T11:05:41Z", - "updated_at": "2024-12-11T22:13:29Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "I can't seem to find the implementation of [this endpoint](https://docs.github.com/en/rest/apps/installations?apiVersion=2022-11-28#add-a-repository-to-an-app-installation).\r\n\r\nWhat I want to do is be able to create a repository and add it to an already existing app in my github organization. I want to achieve this by only using the app installation ID and personal access token.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1899/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1899/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1847", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1847/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1847/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1847/events", - "html_url": "https://github.com/hub4j/github-api/issues/1847", - "id": 2318655614, - "node_id": "I_kwDOAAlq-s6KM-B-", - "number": 1847, - "title": "Custom properties missing in GHRepository", - "user": { - "login": "nardew", - "id": 28791551, - "node_id": "MDQ6VXNlcjI4NzkxNTUx", - "avatar_url": "https://avatars.githubusercontent.com/u/28791551?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/nardew", - "html_url": "https://github.com/nardew", - "followers_url": "https://api.github.com/users/nardew/followers", - "following_url": "https://api.github.com/users/nardew/following{/other_user}", - "gists_url": "https://api.github.com/users/nardew/gists{/gist_id}", - "starred_url": "https://api.github.com/users/nardew/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/nardew/subscriptions", - "organizations_url": "https://api.github.com/users/nardew/orgs", - "repos_url": "https://api.github.com/users/nardew/repos", - "events_url": "https://api.github.com/users/nardew/events{/privacy}", - "received_events_url": "https://api.github.com/users/nardew/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 7, - "created_at": "2024-05-27T09:10:49Z", - "updated_at": "2024-12-09T03:48:22Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\n`GHRepository` class (interface to `repos/org/repo_name` GitHub endpoint) is missing custom properties. They are mentioned in the GitHub documentation at the root level as\r\n\r\n```\r\n\"custom_properties\": {\r\n \"type\": \"object\",\r\n \"description\": \"The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.\",\r\n \"additionalProperties\": true\r\n }\r\n```", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1847/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1847/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1983", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1983/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1983/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1983/events", - "html_url": "https://github.com/hub4j/github-api/issues/1983", - "id": 2631489077, - "node_id": "I_kwDOAAlq-s6c2VY1", - "number": 1983, - "title": "`getReleaseByTagName` does not find draft releases", - "user": { - "login": "MattSturgeon", - "id": 5046562, - "node_id": "MDQ6VXNlcjUwNDY1NjI=", - "avatar_url": "https://avatars.githubusercontent.com/u/5046562?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/MattSturgeon", - "html_url": "https://github.com/MattSturgeon", - "followers_url": "https://api.github.com/users/MattSturgeon/followers", - "following_url": "https://api.github.com/users/MattSturgeon/following{/other_user}", - "gists_url": "https://api.github.com/users/MattSturgeon/gists{/gist_id}", - "starred_url": "https://api.github.com/users/MattSturgeon/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/MattSturgeon/subscriptions", - "organizations_url": "https://api.github.com/users/MattSturgeon/orgs", - "repos_url": "https://api.github.com/users/MattSturgeon/repos", - "events_url": "https://api.github.com/users/MattSturgeon/events{/privacy}", - "received_events_url": "https://api.github.com/users/MattSturgeon/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2024-11-03T21:33:06Z", - "updated_at": "2024-11-04T07:20:47Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\n`getReleaseByTagName` is only able to find published releases, not draft releases.\r\n\r\nThis is caused by draft releases not being accessible via the `GET /repos/:owner/:repo/releases/tags/:tag` endpoint.\r\n\r\nDraft releases do have the `tag_name` attribute set correctly, however they are only accessible via:\r\n- `GET /repos/:owner/:repo/releases`\r\n- `GET /repos/:owner/:repo/releases/:id`\r\n- GraphQL\r\n\r\nWithout this, the only way I am able to find draft releases is by iterating over `listReleases()`.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Create a draft release on a GitHub repo\r\n2. Attempt to use `getReleaseByTagName` to retrieve the release information\r\n3. See that `null` is returned instead\r\n\r\n**Expected behavior**\r\nI expect either `getReleaseByTagName` to lookup draft releases, or an alternative method be added to do so.\r\n\r\nIf a new method is added, I'm not sure the best name for it.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: NixOS 24.11\r\n - Browser Firefox 131\r\n - Version github-api 1.318\r\n\r\n**Additional context**\r\n`getReleaseByTagName` was added in https://github.com/hub4j/github-api/pull/411\r\n\r\nThe `gh` CLI implements its [`FetchReleases`](https://github.com/cli/cli/blob/30066b0042d0c5928d959e288144300cb28196c9/pkg/cmd/release/shared/fetch.go#L134-L161) function as first using the `GET /repos/:owner/:repo/releases/tags/:tag` endpoint, and then falling back to a [`fetchDraftRelease`](https://github.com/cli/cli/blob/30066b0042d0c5928d959e288144300cb28196c9/pkg/cmd/release/shared/fetch.go#L169-L200) function which finds the release via a GraphQL qurey and then gets all the data via a `GET /repos/:owner/:repo/releases/:id` request.\r\n\r\nIn the `gh` CLI implementation, fetching a draft release requires three requests:\r\n1. Lookup `GET /repos/:owner/:repo/releases/tags/:tag` (404)\r\n2. Lookup GraphQL query\r\n3. Lookup `GET /repos/:owner/:repo/releases/:id`\r\n\r\nThe first request is not strictly necessary, since the GraphQL query will also find non-draft releases.\r\n\r\nI was able to use the following query to get the tag's id for draft tags:\r\n```graphql\r\nquery($owner:String!, $repo:String!, $tagName:String!){\r\n repository(owner: $owner, name: $repo) {\r\n release(tagName: $tagName) {\r\n databaseId,\r\n isDraft\r\n }\r\n }\r\n}\r\n```", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1983/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1983/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1974", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1974/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1974/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1974/events", - "html_url": "https://github.com/hub4j/github-api/issues/1974", - "id": 2597968075, - "node_id": "I_kwDOAAlq-s6a2djL", - "number": 1974, - "title": "Calling getRef().delete() does not respect the base URL set in .withEndpoint()", - "user": { - "login": "ajmalab", - "id": 90693406, - "node_id": "MDQ6VXNlcjkwNjkzNDA2", - "avatar_url": "https://avatars.githubusercontent.com/u/90693406?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/ajmalab", - "html_url": "https://github.com/ajmalab", - "followers_url": "https://api.github.com/users/ajmalab/followers", - "following_url": "https://api.github.com/users/ajmalab/following{/other_user}", - "gists_url": "https://api.github.com/users/ajmalab/gists{/gist_id}", - "starred_url": "https://api.github.com/users/ajmalab/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/ajmalab/subscriptions", - "organizations_url": "https://api.github.com/users/ajmalab/orgs", - "repos_url": "https://api.github.com/users/ajmalab/repos", - "events_url": "https://api.github.com/users/ajmalab/events{/privacy}", - "received_events_url": "https://api.github.com/users/ajmalab/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1686292366, - "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", - "name": "more information needed", - "color": "9ce1ed", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 3, - "created_at": "2024-10-18T16:43:11Z", - "updated_at": "2024-10-26T08:23:20Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nCalling `getRef().delete()` does not respect the base URL set in .withEndpoint() when creating the OAuth client. It uses `api.github.com` by default. While this would work in production, it blocks the ability to test this endpoint using local mock servers.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Create an OAuth client as follows\r\n```\r\nvar githubClient = new GitHubBuilder().withOAuthToken(\"my-token\").withEndpoint(\"http://localhost:8080\").build();\r\n```\r\n3. Call the method to delete a ref:\r\n```\r\ngithubClient.getRepo(\"owner/repo\").getRef(\"heads/my-branch\").delete()\r\n```\r\n4. If you inspect the request in a debugger, you will see that the constructed URL has the host `https://api.github.com` and not `http://localhost:8080`.\r\n\r\n\r\n**Expected behavior**\r\nThe `getRef().delete()` method should respect the base URL passed in via `withEndpoint()` like the other chained methods of `getRepository()`.\r\n\r\n\r\n**Additional context**\r\nLibrary version: 1.321\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1974/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1974/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/601", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/601/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/601/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/601/events", - "html_url": "https://github.com/hub4j/github-api/issues/601", - "id": 520420353, - "node_id": "MDU6SXNzdWU1MjA0MjAzNTM=", - "number": 601, - "title": "Document this library's approach to GitHub API rate limit", - "user": { - "login": "PauloMigAlmeida", - "id": 1011868, - "node_id": "MDQ6VXNlcjEwMTE4Njg=", - "avatar_url": "https://avatars.githubusercontent.com/u/1011868?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/PauloMigAlmeida", - "html_url": "https://github.com/PauloMigAlmeida", - "followers_url": "https://api.github.com/users/PauloMigAlmeida/followers", - "following_url": "https://api.github.com/users/PauloMigAlmeida/following{/other_user}", - "gists_url": "https://api.github.com/users/PauloMigAlmeida/gists{/gist_id}", - "starred_url": "https://api.github.com/users/PauloMigAlmeida/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/PauloMigAlmeida/subscriptions", - "organizations_url": "https://api.github.com/users/PauloMigAlmeida/orgs", - "repos_url": "https://api.github.com/users/PauloMigAlmeida/repos", - "events_url": "https://api.github.com/users/PauloMigAlmeida/events{/privacy}", - "received_events_url": "https://api.github.com/users/PauloMigAlmeida/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 2070644911, - "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", - "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", - "name": "documentation", - "color": "6ee5cb", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2019-11-09T13:00:41Z", - "updated_at": "2024-10-22T08:19:14Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Even for people that know certain bits and pieces of this library's source code, it still not trivial to understand how this library deals with GitHub's API rate limit.\r\n\r\nI'm planning to write something about it as soon as the #595 is merged (as it may introduce the custom api rates)\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/601/reactions", - "total_count": 2, - "+1": 2, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/601/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1658", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1658/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1658/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1658/events", - "html_url": "https://github.com/hub4j/github-api/issues/1658", - "id": 1708875207, - "node_id": "I_kwDOAAlq-s5l213H", - "number": 1658, - "title": "Convert methods with checked exceptions to unchecked (support streaming and functional programming)", - "user": { - "login": "Haarolean", - "id": 1494347, - "node_id": "MDQ6VXNlcjE0OTQzNDc=", - "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Haarolean", - "html_url": "https://github.com/Haarolean", - "followers_url": "https://api.github.com/users/Haarolean/followers", - "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", - "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", - "organizations_url": "https://api.github.com/users/Haarolean/orgs", - "repos_url": "https://api.github.com/users/Haarolean/repos", - "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", - "received_events_url": "https://api.github.com/users/Haarolean/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1780165359, - "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", - "name": "breaking change", - "color": "b60205", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 20, - "created_at": "2023-05-14T09:18:13Z", - "updated_at": "2024-10-01T08:57:45Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Hi,\r\n`GHObject#getCreatedAt` and `GHObject#getUpdatedAt` throw unnecessary `IOException` which is not being thrown by an underlying code. Is there a reason for this?", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1658/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1658/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1916", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1916/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1916/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1916/events", - "html_url": "https://github.com/hub4j/github-api/issues/1916", - "id": 2492554383, - "node_id": "I_kwDOAAlq-s6UkVyP", - "number": 1916, - "title": "Support /repos/{owner}/{repo}/automated-security-fixes", - "user": { - "login": "ranma2913", - "id": 4295880, - "node_id": "MDQ6VXNlcjQyOTU4ODA=", - "avatar_url": "https://avatars.githubusercontent.com/u/4295880?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/ranma2913", - "html_url": "https://github.com/ranma2913", - "followers_url": "https://api.github.com/users/ranma2913/followers", - "following_url": "https://api.github.com/users/ranma2913/following{/other_user}", - "gists_url": "https://api.github.com/users/ranma2913/gists{/gist_id}", - "starred_url": "https://api.github.com/users/ranma2913/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/ranma2913/subscriptions", - "organizations_url": "https://api.github.com/users/ranma2913/orgs", - "repos_url": "https://api.github.com/users/ranma2913/repos", - "events_url": "https://api.github.com/users/ranma2913/events{/privacy}", - "received_events_url": "https://api.github.com/users/ranma2913/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2024-08-28T16:36:56Z", - "updated_at": "2024-09-10T07:07:05Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Support Endpoints:\r\n\r\n- https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#check-if-automated-security-fixes-are-enabled-for-a-repository\r\n- https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#enable-automated-security-fixes\r\n- https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#disable-automated-security-fixes", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1916/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1916/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/901", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/901/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/901/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/901/events", - "html_url": "https://github.com/hub4j/github-api/issues/901", - "id": 666061684, - "node_id": "MDU6SXNzdWU2NjYwNjE2ODQ=", - "number": 901, - "title": "Commit bigger file failed", - "user": { - "login": "laboratorys", - "id": 53255535, - "node_id": "MDQ6VXNlcjUzMjU1NTM1", - "avatar_url": "https://avatars.githubusercontent.com/u/53255535?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/laboratorys", - "html_url": "https://github.com/laboratorys", - "followers_url": "https://api.github.com/users/laboratorys/followers", - "following_url": "https://api.github.com/users/laboratorys/following{/other_user}", - "gists_url": "https://api.github.com/users/laboratorys/gists{/gist_id}", - "starred_url": "https://api.github.com/users/laboratorys/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/laboratorys/subscriptions", - "organizations_url": "https://api.github.com/users/laboratorys/orgs", - "repos_url": "https://api.github.com/users/laboratorys/repos", - "events_url": "https://api.github.com/users/laboratorys/events{/privacy}", - "received_events_url": "https://api.github.com/users/laboratorys/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - }, - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 5, - "created_at": "2020-07-27T07:34:42Z", - "updated_at": "2024-09-06T04:03:42Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Error when I upload a 60M file.\r\nThis is my code.\r\n```\r\nGHRepository repo = github.getRepository(user+\"/\"+GithubUploader.repo);\r\n\t\t\tGHRef masterRef = repo.getRef(\"heads/master\");\r\n\t String masterTreeSha = repo.getTreeRecursive(\"master\", 1).getSha();\r\n\t GHTreeBuilder treeBuilder = repo.createTree().baseTree(masterTreeSha);\r\n\t\t\ttreeBuilder.add(uploadPath+\"/\"+file.getName(), FileUtil.readBytes(file), true);\r\n\t\t\tString treeSha = treeBuilder.create().getSha();\r\n\t String commitSha = repo.createCommit()\r\n\t \t .message(username + \" updates\")\r\n\t .tree(treeSha)\r\n\t .parent(masterRef.getObject().getSha())\r\n\t .create()\r\n\t .getSHA1();\r\n\t masterRef.updateTo(commitSha);\r\n```\r\nAnd the error:\r\n```\r\njava.lang.OutOfMemoryError: Java heap space\r\n\tat java.util.Base64$Encoder.encode(Base64.java:262) ~[na:1.8.0_262]\r\n\tat java.util.Base64$Encoder.encodeToString(Base64.java:315) ~[na:1.8.0_262]\r\n\tat org.kohsuke.github.GHBlobBuilder.binaryContent(GHBlobBuilder.java:39) ~[github-api-1.115.jar!/:na]\r\n\tat org.kohsuke.github.GHTreeBuilder.add(GHTreeBuilder.java:136) ~[github-api-1.115.jar!/:na]\r\n```\r\nRefer to this link\r\nhttps://github.com/hub4j/github-api/issues/878#issuecomment-655047530", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/901/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/901/timeline", - "performed_via_github_app": null, - "state_reason": "reopened", - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/513", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/513/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/513/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/513/events", - "html_url": "https://github.com/hub4j/github-api/issues/513", - "id": 432772736, - "node_id": "MDU6SXNzdWU0MzI3NzI3MzY=", - "number": 513, - "title": "Make low-level Requester and GitHubClient APIs public", - "user": { - "login": "Vampire", - "id": 325196, - "node_id": "MDQ6VXNlcjMyNTE5Ng==", - "avatar_url": "https://avatars.githubusercontent.com/u/325196?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Vampire", - "html_url": "https://github.com/Vampire", - "followers_url": "https://api.github.com/users/Vampire/followers", - "following_url": "https://api.github.com/users/Vampire/following{/other_user}", - "gists_url": "https://api.github.com/users/Vampire/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Vampire/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Vampire/subscriptions", - "organizations_url": "https://api.github.com/users/Vampire/orgs", - "repos_url": "https://api.github.com/users/Vampire/repos", - "events_url": "https://api.github.com/users/Vampire/events{/privacy}", - "received_events_url": "https://api.github.com/users/Vampire/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 3, - "created_at": "2019-04-12T22:51:43Z", - "updated_at": "2024-08-28T16:50:23Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "For being able to use missing API functionality it would be nice if the `Requester` would be accessible, so that the low-level requests can be done manually or e. g. with Kotlin extension functions, but still having the lib do rate limiting and so on.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/513/reactions", - "total_count": 8, - "+1": 8, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/513/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1712", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1712/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1712/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1712/events", - "html_url": "https://github.com/hub4j/github-api/issues/1712", - "id": 1903371311, - "node_id": "I_kwDOAAlq-s5xcyQv", - "number": 1712, - "title": "Missing support for deployment environments", - "user": { - "login": "charlie-collard", - "id": 11244353, - "node_id": "MDQ6VXNlcjExMjQ0MzUz", - "avatar_url": "https://avatars.githubusercontent.com/u/11244353?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/charlie-collard", - "html_url": "https://github.com/charlie-collard", - "followers_url": "https://api.github.com/users/charlie-collard/followers", - "following_url": "https://api.github.com/users/charlie-collard/following{/other_user}", - "gists_url": "https://api.github.com/users/charlie-collard/gists{/gist_id}", - "starred_url": "https://api.github.com/users/charlie-collard/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/charlie-collard/subscriptions", - "organizations_url": "https://api.github.com/users/charlie-collard/orgs", - "repos_url": "https://api.github.com/users/charlie-collard/repos", - "events_url": "https://api.github.com/users/charlie-collard/events{/privacy}", - "received_events_url": "https://api.github.com/users/charlie-collard/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 3, - "created_at": "2023-09-19T16:45:20Z", - "updated_at": "2024-07-10T07:52:06Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Deployment environments are missing from the library. For example, I can't get, list, create, update, or delete deployment environments.\r\n\r\n[GitHub REST API documentation for deployment environments](https://docs.github.com/en/rest/deployments/environments?apiVersion=2022-11-28)\r\n\r\nNote: Deployment environments may be indirectly created via creating a deployment and specifying a string in the environment field:\r\n\r\n```java\r\nimport org.kohsuke.github.GitHub\r\n\r\nprivate void createDeployment() {\r\n GitHub.connectUsingOAuth(\"githubToken\")\r\n .getRepository(\"user/repo\")\r\n .createDeployment(\"1.0\")\r\n .environment(\"production\")\r\n .create()\r\n}\r\n```", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1712/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1712/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1891", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1891/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1891/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1891/events", - "html_url": "https://github.com/hub4j/github-api/issues/1891", - "id": 2384471476, - "node_id": "I_kwDOAAlq-s6OICW0", - "number": 1891, - "title": "Improve EnumTest to enforce `UNKNOWN` value for all API enums", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2024-07-01T18:24:14Z", - "updated_at": "2024-07-01T18:24:20Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "#1885 showed that we haven't been checking the count of all enum values. At the same time I noticed that we do not have `UNKNOWN` values for all API `enum`. \r\n\r\nAdding new values is not considered a breaking change by GitHub. This has caused `hub4j/github-api` calls to start failing unexpectedly in the the past - the new value is not recognized and we throw an exception during deserialization. No good. \r\n\r\nWe need to add `UNKNOWN` to all `enum` types that are returned from GitHub and enforce it. The test will include an exclude list to allow `enum` types only used during sending but not retrieving data. \r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1891/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1891/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1846", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1846/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1846/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1846/events", - "html_url": "https://github.com/hub4j/github-api/issues/1846", - "id": 2315222969, - "node_id": "I_kwDOAAlq-s6J_3-5", - "number": 1846, - "title": "how to use issuePayload.getIssue().deleteReaction?", - "user": { - "login": "maxandersen", - "id": 54129, - "node_id": "MDQ6VXNlcjU0MTI5", - "avatar_url": "https://avatars.githubusercontent.com/u/54129?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/maxandersen", - "html_url": "https://github.com/maxandersen", - "followers_url": "https://api.github.com/users/maxandersen/followers", - "following_url": "https://api.github.com/users/maxandersen/following{/other_user}", - "gists_url": "https://api.github.com/users/maxandersen/gists{/gist_id}", - "starred_url": "https://api.github.com/users/maxandersen/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/maxandersen/subscriptions", - "organizations_url": "https://api.github.com/users/maxandersen/orgs", - "repos_url": "https://api.github.com/users/maxandersen/repos", - "events_url": "https://api.github.com/users/maxandersen/events{/privacy}", - "received_events_url": "https://api.github.com/users/maxandersen/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1686290078, - "node_id": "MDU6TGFiZWwxNjg2MjkwMDc4", - "url": "https://api.github.com/repos/hub4j/github-api/labels/external", - "name": "external", - "color": "a0a0a0", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2024-05-24T11:57:24Z", - "updated_at": "2024-06-20T02:45:44Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "how is `issuePayload.getIssue().deleteReaction` intended to be used when its not possible to create a GHReaction with bot nor user + reaction as parameter?", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1846/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1846/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1583", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1583/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1583/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1583/events", - "html_url": "https://github.com/hub4j/github-api/issues/1583", - "id": 1508284810, - "node_id": "I_kwDOAAlq-s5Z5pmK", - "number": 1583, - "title": "Enhancement: Support configuring GHE pre-receive hooks", - "user": { - "login": "michaelpigg", - "id": 8850, - "node_id": "MDQ6VXNlcjg4NTA=", - "avatar_url": "https://avatars.githubusercontent.com/u/8850?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/michaelpigg", - "html_url": "https://github.com/michaelpigg", - "followers_url": "https://api.github.com/users/michaelpigg/followers", - "following_url": "https://api.github.com/users/michaelpigg/following{/other_user}", - "gists_url": "https://api.github.com/users/michaelpigg/gists{/gist_id}", - "starred_url": "https://api.github.com/users/michaelpigg/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/michaelpigg/subscriptions", - "organizations_url": "https://api.github.com/users/michaelpigg/orgs", - "repos_url": "https://api.github.com/users/michaelpigg/repos", - "events_url": "https://api.github.com/users/michaelpigg/events{/privacy}", - "received_events_url": "https://api.github.com/users/michaelpigg/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 6, - "created_at": "2022-12-22T17:29:19Z", - "updated_at": "2024-06-06T03:16:17Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Self-hosted GitHub Enterprise supports configuring pre-receive hooks at the [organization](https://docs.github.com/en/enterprise-server@3.6/rest/enterprise-admin/org-pre-receive-hooks) and [repository](https://docs.github.com/en/enterprise-server@3.6/rest/enterprise-admin/repo-pre-receive-hooks). I would like github-api to support configuring these hooks.\r\n\r\nI needed to configure pre-receive hooks on several GHE repos, and extended github-api to support doing so. My enhancement mirrors the existing GHHook implementation because the two are similar in some ways, but the details are quite different.\r\n\r\nI would like to contribute that enhancement if it would be welcomed. I know the enhancement works and is valuable to me. However, I'm not sure if the project wants to go down the path of supporting a relatively niche feature that not all users would have access to. So I wanted to check before putting in the work to write tests and put together a good PR.\r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1583/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1583/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1843", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1843/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1843/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1843/events", - "html_url": "https://github.com/hub4j/github-api/issues/1843", - "id": 2277296676, - "node_id": "I_kwDOAAlq-s6HvMok", - "number": 1843, - "title": "GHHook id is long, but webhook operations require int", - "user": { - "login": "karlhendrikindrikson", - "id": 32715760, - "node_id": "MDQ6VXNlcjMyNzE1NzYw", - "avatar_url": "https://avatars.githubusercontent.com/u/32715760?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/karlhendrikindrikson", - "html_url": "https://github.com/karlhendrikindrikson", - "followers_url": "https://api.github.com/users/karlhendrikindrikson/followers", - "following_url": "https://api.github.com/users/karlhendrikindrikson/following{/other_user}", - "gists_url": "https://api.github.com/users/karlhendrikindrikson/gists{/gist_id}", - "starred_url": "https://api.github.com/users/karlhendrikindrikson/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/karlhendrikindrikson/subscriptions", - "organizations_url": "https://api.github.com/users/karlhendrikindrikson/orgs", - "repos_url": "https://api.github.com/users/karlhendrikindrikson/repos", - "events_url": "https://api.github.com/users/karlhendrikindrikson/events{/privacy}", - "received_events_url": "https://api.github.com/users/karlhendrikindrikson/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2024-05-03T09:36:29Z", - "updated_at": "2024-06-06T03:06:58Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Hi.\r\n\r\nWhen creating user and organization specific webhooks, the webhook id type is long, but find and delete operations accept an integer. This seems like a minor problem, since webhook ids start incrementing from 1, but isn't this a type safety problem in the long run?", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1843/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1843/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1498", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1498/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1498/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1498/events", - "html_url": "https://github.com/hub4j/github-api/issues/1498", - "id": 1327616944, - "node_id": "I_kwDOAAlq-s5PIdOw", - "number": 1498, - "title": "Add an option to generate release notes", - "user": { - "login": "aalmiray", - "id": 13969, - "node_id": "MDQ6VXNlcjEzOTY5", - "avatar_url": "https://avatars.githubusercontent.com/u/13969?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/aalmiray", - "html_url": "https://github.com/aalmiray", - "followers_url": "https://api.github.com/users/aalmiray/followers", - "following_url": "https://api.github.com/users/aalmiray/following{/other_user}", - "gists_url": "https://api.github.com/users/aalmiray/gists{/gist_id}", - "starred_url": "https://api.github.com/users/aalmiray/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/aalmiray/subscriptions", - "organizations_url": "https://api.github.com/users/aalmiray/orgs", - "repos_url": "https://api.github.com/users/aalmiray/repos", - "events_url": "https://api.github.com/users/aalmiray/events{/privacy}", - "received_events_url": "https://api.github.com/users/aalmiray/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 6, - "created_at": "2022-08-03T18:15:41Z", - "updated_at": "2024-05-30T06:18:51Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "GitHub offers an option to generate release notes based on issues and PRs -> https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes\r\n\r\nThe API call is described at https://docs.github.com/en/rest/releases/releases#generate-release-notes-content-for-a-release", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1498/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1498/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1771", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1771/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1771/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1771/events", - "html_url": "https://github.com/hub4j/github-api/issues/1771", - "id": 2044899947, - "node_id": "I_kwDOAAlq-s554rJr", - "number": 1771, - "title": "`GHEventPayload` should not contain `repository` as a root level property", - "user": { - "login": "Haarolean", - "id": 1494347, - "node_id": "MDQ6VXNlcjE0OTQzNDc=", - "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Haarolean", - "html_url": "https://github.com/Haarolean", - "followers_url": "https://api.github.com/users/Haarolean/followers", - "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", - "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", - "organizations_url": "https://api.github.com/users/Haarolean/orgs", - "repos_url": "https://api.github.com/users/Haarolean/repos", - "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", - "received_events_url": "https://api.github.com/users/Haarolean/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1780165359, - "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", - "name": "breaking change", - "color": "b60205", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2023-12-16T18:43:30Z", - "updated_at": "2024-03-18T20:39:52Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Probly a candidate for a breaking change for v2:\r\n`GHEventPayload` probably should not contain `repository` as a root level property as it might not be present in every webhook payload. An example would be `installation` event, which is evident from `org/kohsuke/github/GHEventPayloadTest/installation.json` contents.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1771/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1771/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1458", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1458/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1458/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1458/events", - "html_url": "https://github.com/hub4j/github-api/issues/1458", - "id": 1241532782, - "node_id": "I_kwDOAAlq-s5KAElu", - "number": 1458, - "title": "Error getting notification", - "user": { - "login": "DeveloperSantosh", - "id": 100271188, - "node_id": "U_kgDOBfoEVA", - "avatar_url": "https://avatars.githubusercontent.com/u/100271188?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/DeveloperSantosh", - "html_url": "https://github.com/DeveloperSantosh", - "followers_url": "https://api.github.com/users/DeveloperSantosh/followers", - "following_url": "https://api.github.com/users/DeveloperSantosh/following{/other_user}", - "gists_url": "https://api.github.com/users/DeveloperSantosh/gists{/gist_id}", - "starred_url": "https://api.github.com/users/DeveloperSantosh/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/DeveloperSantosh/subscriptions", - "organizations_url": "https://api.github.com/users/DeveloperSantosh/orgs", - "repos_url": "https://api.github.com/users/DeveloperSantosh/repos", - "events_url": "https://api.github.com/users/DeveloperSantosh/events{/privacy}", - "received_events_url": "https://api.github.com/users/DeveloperSantosh/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 5, - "created_at": "2022-05-19T10:01:22Z", - "updated_at": "2024-03-15T23:38:19Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "While retrieving notifications it's throwing errors described below for the code listed below.\r\n```bash\r\norg.kohsuke.github.HttpException: {\"message\":\"Unable to parse If-Modified-Since request header. Please make sure value is in an acceptable format.\",\"documentation_url\":\"https://docs.github.com/rest/reference/activity#list-notifications-for-the-authenticated-user\"}\r\n\tat org.kohsuke.github.GitHubConnectorResponseErrorHandler$1.onError(GitHubConnectorResponseErrorHandler.java:56) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.GitHubClient.detectKnownErrors(GitHubClient.java:424) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:386) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.GitHubPageIterator.fetch(GitHubPageIterator.java:142) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.GitHubPageIterator.hasNext(GitHubPageIterator.java:89) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.PagedIterator.fetch(PagedIterator.java:106) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.PagedIterator.nextPageArray(PagedIterator.java:134) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.PagedIterable.toArray(PagedIterable.java:78) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.GitHubPageContentsIterable.toResponse(GitHubPageContentsIterable.java:58) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.GHNotificationStream$1.fetch(GHNotificationStream.java:183) ~[github-api-1.306.jar:na]\r\n\tat org.kohsuke.github.GHNotificationStream$1.hasNext(GHNotificationStream.java:149) ~[github-api-1.306.jar:na]\r\n```\r\n**The line of code where I am getting error is\r\n```code\r\nGHNotificationStream notificationStream = gitHub.listNotifications();\r\nfor (GHThread ghThread : notificationStream){\r\n Map notification = new HashMap<>();\r\n notification.put(\"type\", ghThread.getType());\r\n notification.put(\"title\", ghThread.getTitle());\r\n notification.put(\"reason\", ghThread.getReason());\r\n notification.put(\"createdAt\", String.valueOf(ghThread.getCreatedAt()));\r\n notification.put(\"updatedAt\", String.valueOf(ghThread.getUpdatedAt()));\r\n notification.put(\"repository\", ghThread.getRepository().getName());\r\n notificationList.add(notification);\r\n }\r\n```\r\nI am not sure about the real cause of it but it's maybe caused due to the 'null' value passing in lastModified variable in org.kohsuke.github.GHNotificationStream class line number: 107 of below snippet,\r\n\r\n```\r\nif (this.nextCheckTime < now) {\r\n req.setHeader(\"If-Modified-Since\", `this.lastModified);\r\n Requester requester = (Requester)req.withUrlPath(GHNotificationStream.this.apiUrl, new String[0]);\r\n GitHubResponse response = ((GitHubPageContentsIterable)requester.toIterable(GHThread[].class, (Consumer)null)).toResponse();\r\n this.threads = (GHThread[])response.body();\r\n if (this.threads == null) {\r\n this.threads = GHNotificationStream.EMPTY_ARRAY;\r\n } else {\r\n ++this.lastUpdated;\r\n }\r\n```\r\n**Expected behavior**\r\nA GHThread value should be given in return but throwing HttpException indicating the value of the header \"If-Modified-Since\" is null.\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1458/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1458/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1035", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1035/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1035/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1035/events", - "html_url": "https://github.com/hub4j/github-api/issues/1035", - "id": 806598555, - "node_id": "MDU6SXNzdWU4MDY1OTg1NTU=", - "number": 1035, - "title": "Add serialization JSON output ", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2021-02-11T17:33:16Z", - "updated_at": "2024-03-15T22:28:12Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Several users have filed issues around serializing objects to JSON: #1034, #971. \r\n\r\nConsider adding a `toJSON()` method to objects, `readRawJSON()` method to `GitHub`, or documenting a supported way to do this using the existing `ObjectMapper` returning methods.\r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1035/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1035/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1815", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1815/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1815/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1815/events", - "html_url": "https://github.com/hub4j/github-api/issues/1815", - "id": 2180302354, - "node_id": "I_kwDOAAlq-s6B9MYS", - "number": 1815, - "title": "Ban use of `Thread.sleep()` in tests unless specifically approved", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2024-03-11T21:38:43Z", - "updated_at": "2024-03-11T23:35:15Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "We add `await`-based pauses the don't slow down CI testing: \r\n\r\nhttps://github.com/hub4j/github-api/blob/main/src/test/java/org/kohsuke/github/GHWorkflowRunTest.java#L574-L584\r\n\r\nThere are some timing based tests, but they are the exception. Most tests don't need to care. \r\nWe need to make `await()` an easily used test helper, enforce not calling `Thread.sleep()` unless specifically approved, and provide a helpful failure message regarding using `await`. \r\n\r\nPerhaps also a `sleepWhenTakingSnapshot()` method. See #1810 for example of why. \r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1815/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1815/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1263", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1263/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1263/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1263/events", - "html_url": "https://github.com/hub4j/github-api/issues/1263", - "id": 1015548992, - "node_id": "I_kwDOAAlq-s48iAxA", - "number": 1263, - "title": "Consider how to use OpenAPI information to improve testing and verification", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - }, - { - "id": 1686292366, - "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", - "name": "more information needed", - "color": "9ce1ed", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2021-10-04T19:26:53Z", - "updated_at": "2024-03-11T22:47:10Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "See https://github.com/github/rest-api-description\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1263/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1263/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1768", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1768/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1768/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1768/events", - "html_url": "https://github.com/hub4j/github-api/issues/1768", - "id": 2025917953, - "node_id": "I_kwDOAAlq-s54wQ4B", - "number": 1768, - "title": "pr.listReviews().toList(); throws GHFileNotFoundException ", - "user": { - "login": "daniel-b2c2", - "id": 94372198, - "node_id": "U_kgDOBaABZg", - "avatar_url": "https://avatars.githubusercontent.com/u/94372198?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/daniel-b2c2", - "html_url": "https://github.com/daniel-b2c2", - "followers_url": "https://api.github.com/users/daniel-b2c2/followers", - "following_url": "https://api.github.com/users/daniel-b2c2/following{/other_user}", - "gists_url": "https://api.github.com/users/daniel-b2c2/gists{/gist_id}", - "starred_url": "https://api.github.com/users/daniel-b2c2/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/daniel-b2c2/subscriptions", - "organizations_url": "https://api.github.com/users/daniel-b2c2/orgs", - "repos_url": "https://api.github.com/users/daniel-b2c2/repos", - "events_url": "https://api.github.com/users/daniel-b2c2/events{/privacy}", - "received_events_url": "https://api.github.com/users/daniel-b2c2/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2023-12-05T11:00:56Z", - "updated_at": "2024-03-09T13:34:39Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\n`List ghPullRequestReviews = pr.listReviews().toList();`\r\nThe above code should return an empty list if no reviews exist, instead it throws GHFileNotFoundException \r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Create a pull request (but do not review it)\r\n2. Search for that pull request, and then list reviews as shown in the code snippet above.\r\n3. Observe the exception thrown.\r\n\r\n**Expected behavior**\r\nReturn an empty list when there are no reviews.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: mac\r\n - Browser NA\r\n - Version 1.318\r\n\r\n**Additional context**\r\nI think this is a regression and this behaviour wasn't like this in previous versions?", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1768/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1768/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - } - ] -} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/5-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/5-search_issues.json deleted file mode 100644 index 7717d61fe8..0000000000 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/5-search_issues.json +++ /dev/null @@ -1,2634 +0,0 @@ -{ - "total_count": 164, - "incomplete_results": false, - "items": [ - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/494", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/494/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/494/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/494/events", - "html_url": "https://github.com/hub4j/github-api/issues/494", - "id": 407625055, - "node_id": "MDU6SXNzdWU0MDc2MjUwNTU=", - "number": 494, - "title": "Default branch is always null for repos accessed with GHContentSearchBuilder", - "user": { - "login": "fwdekker", - "id": 13442533, - "node_id": "MDQ6VXNlcjEzNDQyNTMz", - "avatar_url": "https://avatars.githubusercontent.com/u/13442533?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/fwdekker", - "html_url": "https://github.com/fwdekker", - "followers_url": "https://api.github.com/users/fwdekker/followers", - "following_url": "https://api.github.com/users/fwdekker/following{/other_user}", - "gists_url": "https://api.github.com/users/fwdekker/gists{/gist_id}", - "starred_url": "https://api.github.com/users/fwdekker/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/fwdekker/subscriptions", - "organizations_url": "https://api.github.com/users/fwdekker/orgs", - "repos_url": "https://api.github.com/users/fwdekker/repos", - "events_url": "https://api.github.com/users/fwdekker/events{/privacy}", - "received_events_url": "https://api.github.com/users/fwdekker/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2019-02-07T10:14:51Z", - "updated_at": "2024-03-08T12:57:04Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "When information on a repository is downloaded using the `GHContentSearchBuilder`, the `defaultBranch` property is always `null`, regardless of whether the repository in question has a default branch. On the other hand, if the same repository is accessed using a simple `getRepository` call, the `defaultBranch` is set correctly.\r\n\r\n## Sample setup\r\n[This repository](https://github.com/Stargator/koskela_sourcecode) has a non-standard default branch, and does not have a `master` branch. I think it's a good example for this issue.\r\n\r\n### Correct behaviour\r\nThe following code returns `\"original\"`, as expected:\r\n```java\r\nGitHub gh = GitHub.connectUsingOAuth(/* insert your token here */);\r\nreturn gh.getRepository(\"Stargator/koskela_sourcecode\").getDefaultBranch();\r\n```\r\n\r\n### Incorrect behaviour\r\nThe following code always returns `null`:\r\n```java\r\nGitHub gh = GitHub.connectUsingOAuth(/* insert your token here */);\r\nGHContentSearchBuilder sb = gh.searchContent().user(\"Stargator\")\r\n .repo(\"Stargator/koskela_sourcecode\")\r\n .q(\"koskela\");\r\nGHContent repo = sb.list().asList().get(0);\r\nreturn repo.getOwner().getDefaultBranch();\r\n```\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/494/reactions", - "total_count": 2, - "+1": 2, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/494/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1782", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1782/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1782/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1782/events", - "html_url": "https://github.com/hub4j/github-api/issues/1782", - "id": 2088750334, - "node_id": "I_kwDOAAlq-s58f8z-", - "number": 1782, - "title": "Updating a label with a question mark results in an error", - "user": { - "login": "gsmet", - "id": 1279749, - "node_id": "MDQ6VXNlcjEyNzk3NDk=", - "avatar_url": "https://avatars.githubusercontent.com/u/1279749?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/gsmet", - "html_url": "https://github.com/gsmet", - "followers_url": "https://api.github.com/users/gsmet/followers", - "following_url": "https://api.github.com/users/gsmet/following{/other_user}", - "gists_url": "https://api.github.com/users/gsmet/gists{/gist_id}", - "starred_url": "https://api.github.com/users/gsmet/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/gsmet/subscriptions", - "organizations_url": "https://api.github.com/users/gsmet/orgs", - "repos_url": "https://api.github.com/users/gsmet/repos", - "events_url": "https://api.github.com/users/gsmet/events{/privacy}", - "received_events_url": "https://api.github.com/users/gsmet/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2024-01-18T17:28:46Z", - "updated_at": "2024-01-19T00:26:28Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\n\r\nIn the Quarkus project, we used to have labels like `triage/backport?` (i.e. something that should be considered for backport but is not certain to be backported).\r\n\r\nWhen working on some automation, I stumbled upon the fact that updating the label name via the API was not possible as the `?` is not correctly escaped in the URI, thus the label not being found when fetched.\r\n\r\n```\r\nrepository.getLabel(\"triage/backport?\").update().name(\"triage/backport-3.6?\").done();\r\n```\r\nwould fail.\r\n\r\nI wanted to log the problem so that we don't forget about it.\r\nI renamed our labels for the time being.\r\n\r\nI'll try to contribute a fix soon but feel free to beat me to it :).\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1782/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1782/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1767", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1767/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1767/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1767/events", - "html_url": "https://github.com/hub4j/github-api/issues/1767", - "id": 2022024107, - "node_id": "I_kwDOAAlq-s54haOr", - "number": 1767, - "title": "List pending team invitations API", - "user": { - "login": "allburov", - "id": 4376814, - "node_id": "MDQ6VXNlcjQzNzY4MTQ=", - "avatar_url": "https://avatars.githubusercontent.com/u/4376814?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/allburov", - "html_url": "https://github.com/allburov", - "followers_url": "https://api.github.com/users/allburov/followers", - "following_url": "https://api.github.com/users/allburov/following{/other_user}", - "gists_url": "https://api.github.com/users/allburov/gists{/gist_id}", - "starred_url": "https://api.github.com/users/allburov/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/allburov/subscriptions", - "organizations_url": "https://api.github.com/users/allburov/orgs", - "repos_url": "https://api.github.com/users/allburov/repos", - "events_url": "https://api.github.com/users/allburov/events{/privacy}", - "received_events_url": "https://api.github.com/users/allburov/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2023-12-02T12:34:42Z", - "updated_at": "2023-12-08T12:49:55Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Hi!\r\nAs I can see there's no API for [List pending team invitations](https://docs.github.com/ru/rest/teams/members?apiVersion=2022-11-28#list-pending-team-invitations).\r\nIt'd be great to have it!", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1767/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1767/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1587", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1587/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1587/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1587/events", - "html_url": "https://github.com/hub4j/github-api/issues/1587", - "id": 1512344293, - "node_id": "I_kwDOAAlq-s5aJIrl", - "number": 1587, - "title": "Enhancement: support name update for GitHub Check Run", - "user": { - "login": "igorsmotto", - "id": 48068670, - "node_id": "MDQ6VXNlcjQ4MDY4Njcw", - "avatar_url": "https://avatars.githubusercontent.com/u/48068670?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/igorsmotto", - "html_url": "https://github.com/igorsmotto", - "followers_url": "https://api.github.com/users/igorsmotto/followers", - "following_url": "https://api.github.com/users/igorsmotto/following{/other_user}", - "gists_url": "https://api.github.com/users/igorsmotto/gists{/gist_id}", - "starred_url": "https://api.github.com/users/igorsmotto/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/igorsmotto/subscriptions", - "organizations_url": "https://api.github.com/users/igorsmotto/orgs", - "repos_url": "https://api.github.com/users/igorsmotto/repos", - "events_url": "https://api.github.com/users/igorsmotto/events{/privacy}", - "received_events_url": "https://api.github.com/users/igorsmotto/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2022-12-28T02:52:37Z", - "updated_at": "2023-12-04T11:07:19Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Currently, both create and update of a GitHub Check Run are handled by [GHCheckRunBuilder](https://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GHCheckRunBuilder.java) class. \r\nFor the update, this is done by constructing an instance with the [checkId](https://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GHCheckRunBuilder.java#L96)\r\n\r\nFollowing the latest GitHub documentation about the [GitHub Check Run Update API](https://docs.github.com/en/rest/checks/runs?apiVersion=2022-11-28#update-a-check-run) it's possible to update the name of the Check Run through it, however, `GHCheckRunBuilder` doesn't expose a method for it. \r\n\r\nThis is probably because the builder is currently handling both create (which doesn't allow it) and update.\r\n\r\nHowever, not sure what's the best approach to enable this, the easiest option that I could think of is by creating a new method `withName` to the Builder that throws an exception (a simple `GHException`) if the instance was created with a name - which means it's not an update.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1587/reactions", - "total_count": 3, - "+1": 3, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1587/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1179", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1179/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1179/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1179/events", - "html_url": "https://github.com/hub4j/github-api/issues/1179", - "id": 916680790, - "node_id": "MDU6SXNzdWU5MTY2ODA3OTA=", - "number": 1179, - "title": "Consumers of Preview APIs should have to explicitly enable the Previews they want", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2021-06-09T21:17:33Z", - "updated_at": "2023-11-30T18:22:32Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Related #1017 #1003\r\n\r\nCurrently, we mark preview APIs as deprecated. Instead we should require consumers to enable the specific Preview endpoints they want and by doing so they accept that those methods may change. \r\n\r\nWe can do this now. In v1, we can log warnings the first time a Preview endpoint is used without being enabled, but otherwise do not change behavior. For v2 we'll actually fail if a preview is used when it hasn't been enabled. ", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1179/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1179/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1506", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1506/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1506/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1506/events", - "html_url": "https://github.com/hub4j/github-api/issues/1506", - "id": 1344481883, - "node_id": "I_kwDOAAlq-s5QIypb", - "number": 1506, - "title": "GHRepository#isDeleteBranchOnMerge alway returns false", - "user": { - "login": "alexsuter", - "id": 7498380, - "node_id": "MDQ6VXNlcjc0OTgzODA=", - "avatar_url": "https://avatars.githubusercontent.com/u/7498380?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/alexsuter", - "html_url": "https://github.com/alexsuter", - "followers_url": "https://api.github.com/users/alexsuter/followers", - "following_url": "https://api.github.com/users/alexsuter/following{/other_user}", - "gists_url": "https://api.github.com/users/alexsuter/gists{/gist_id}", - "starred_url": "https://api.github.com/users/alexsuter/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/alexsuter/subscriptions", - "organizations_url": "https://api.github.com/users/alexsuter/orgs", - "repos_url": "https://api.github.com/users/alexsuter/repos", - "events_url": "https://api.github.com/users/alexsuter/events{/privacy}", - "received_events_url": "https://api.github.com/users/alexsuter/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1686292366, - "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", - "name": "more information needed", - "color": "9ce1ed", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 10, - "created_at": "2022-08-19T13:58:14Z", - "updated_at": "2023-11-22T17:30:53Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nGHRepository#isDeleteBranchOnMerge alway returns false even if it's true\r\n\r\n**To Reproduce**\r\nCall GHRepository#isDeleteBranchOnMerge\r\n\r\n**Expected behavior**\r\nGHRepository#isDeleteBranchOnMerge should return true if its true\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1506/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1506/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1710", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1710/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1710/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1710/events", - "html_url": "https://github.com/hub4j/github-api/issues/1710", - "id": 1901098392, - "node_id": "I_kwDOAAlq-s5xUHWY", - "number": 1710, - "title": "Missing /admin/ldap/teams/:team_id/mapping call", - "user": { - "login": "Fuzzo", - "id": 6161201, - "node_id": "MDQ6VXNlcjYxNjEyMDE=", - "avatar_url": "https://avatars.githubusercontent.com/u/6161201?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Fuzzo", - "html_url": "https://github.com/Fuzzo", - "followers_url": "https://api.github.com/users/Fuzzo/followers", - "following_url": "https://api.github.com/users/Fuzzo/following{/other_user}", - "gists_url": "https://api.github.com/users/Fuzzo/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Fuzzo/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Fuzzo/subscriptions", - "organizations_url": "https://api.github.com/users/Fuzzo/orgs", - "repos_url": "https://api.github.com/users/Fuzzo/repos", - "events_url": "https://api.github.com/users/Fuzzo/events{/privacy}", - "received_events_url": "https://api.github.com/users/Fuzzo/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 7, - "created_at": "2023-09-18T14:41:20Z", - "updated_at": "2023-11-19T07:06:48Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "I'd like to know if is planned to have the call **/admin/ldap/teams/:team_id/mapping** (which takes `ldap_dn` as body parameter) implemented.\r\nThank you for developing this library.\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1710/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1710/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1738", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1738/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1738/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1738/events", - "html_url": "https://github.com/hub4j/github-api/issues/1738", - "id": 1984733821, - "node_id": "I_kwDOAAlq-s52TKJ9", - "number": 1738, - "title": "Meta: Consider squash merges instead of rebase", - "user": { - "login": "Haarolean", - "id": 1494347, - "node_id": "MDQ6VXNlcjE0OTQzNDc=", - "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Haarolean", - "html_url": "https://github.com/Haarolean", - "followers_url": "https://api.github.com/users/Haarolean/followers", - "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", - "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", - "organizations_url": "https://api.github.com/users/Haarolean/orgs", - "repos_url": "https://api.github.com/users/Haarolean/repos", - "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", - "received_events_url": "https://api.github.com/users/Haarolean/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2023-11-09T03:04:26Z", - "updated_at": "2023-11-10T19:48:33Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Hi!\r\n\r\nJust a minor issue I've observed while scanning the git log, it seems that current PR merges into the master are being done via rebase strategy. \r\nI wanted to propose considering switching to a squash strategy, with that there won't be multiple commits for a single PR, which can be distracting.\r\nLike it is now:\r\n\"image\"\r\nPlus this commit:\r\n\"image\"\r\n\r\nWith squash, there would be just one commit like the second one.\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1738/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1738/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1717", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1717/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1717/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1717/events", - "html_url": "https://github.com/hub4j/github-api/issues/1717", - "id": 1907081687, - "node_id": "I_kwDOAAlq-s5xq8HX", - "number": 1717, - "title": "Add Option to disable SSL verification", - "user": { - "login": "HelvetiaAppDev", - "id": 55525429, - "node_id": "MDQ6VXNlcjU1NTI1NDI5", - "avatar_url": "https://avatars.githubusercontent.com/u/55525429?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/HelvetiaAppDev", - "html_url": "https://github.com/HelvetiaAppDev", - "followers_url": "https://api.github.com/users/HelvetiaAppDev/followers", - "following_url": "https://api.github.com/users/HelvetiaAppDev/following{/other_user}", - "gists_url": "https://api.github.com/users/HelvetiaAppDev/gists{/gist_id}", - "starred_url": "https://api.github.com/users/HelvetiaAppDev/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/HelvetiaAppDev/subscriptions", - "organizations_url": "https://api.github.com/users/HelvetiaAppDev/orgs", - "repos_url": "https://api.github.com/users/HelvetiaAppDev/repos", - "events_url": "https://api.github.com/users/HelvetiaAppDev/events{/privacy}", - "received_events_url": "https://api.github.com/users/HelvetiaAppDev/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2023-09-21T14:11:48Z", - "updated_at": "2023-10-20T20:54:51Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "We are behind a corporate firewall proxy, that decrypts and encrypts every traffic. Despite having the root certificate registered in Java, this library fails to connect to github.\r\n\r\n```\r\nCaused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\r\n\tat java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:578)\r\n\tat java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:123)\r\n\tat org.kohsuke.github.extras.HttpClientGitHubConnector.send(HttpClientGitHubConnector.java:72)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:431)\r\n\t... 6 more\r\nCaused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\r\n\tat java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)\r\n\tat java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:371)\r\n\tat java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:314)\r\n\tat java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:309)\r\n\tat java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1357)\r\n\tat java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1232)\r\n\tat java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1175)\r\n\tat java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396)\r\n\tat java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480)\r\n\tat java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1277)\r\n\tat java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1264)\r\n\tat java.base/java.security.AccessController.doPrivileged(AccessController.java:712)\r\n\tat java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask.run(SSLEngineImpl.java:1209)\r\n\tat java.base/java.util.ArrayList.forEach(ArrayList.java:1511)\r\n\tat java.net.http/jdk.internal.net.http.common.SSLFlowDelegate.lambda$executeTasks$3(SSLFlowDelegate.java:1118)\r\n\tat java.net.http/jdk.internal.net.http.HttpClientImpl$DelegatingExecutor.execute(HttpClientImpl.java:157)\r\n\tat java.net.http/jdk.internal.net.http.common.SSLFlowDelegate.executeTasks(SSLFlowDelegate.java:1113)\r\n\tat java.net.http/jdk.internal.net.http.common.SSLFlowDelegate.doHandshake(SSLFlowDelegate.java:1079)\r\n\tat java.net.http/jdk.internal.net.http.common.SSLFlowDelegate$Reader.processData(SSLFlowDelegate.java:484)\r\n\tat java.net.http/jdk.internal.net.http.common.SSLFlowDelegate$Reader$ReaderDownstreamPusher.run(SSLFlowDelegate.java:268)\r\n\tat java.net.http/jdk.internal.net.http.common.SequentialScheduler$LockingRestartableTask.run(SequentialScheduler.java:205)\r\n\tat java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:149)\r\n\tat java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:230)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)\r\n\tat java.base/java.lang.Thread.run(Thread.java:833)\r\nCaused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\r\n\tat java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439)\r\n\tat java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306)\r\n\tat java.base/sun.security.validator.Validator.validate(Validator.java:264)\r\n\tat java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:285)\r\n\tat java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:144)\r\n\tat java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1335)\r\n\t... 21 more\r\nCaused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\r\n\tat java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)\r\n\tat java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)\r\n\tat java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)\r\n\tat java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)\r\n\t... 26 more\r\n\r\n```\r\n\r\nOur current Solution is to provide a custom connector that ignores all checks, but as setConnector is deprecated it would be appreciated, if there was some option to do this e.g. disableSSLVerification.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1717/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1717/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/348", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/348/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/348/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/348/events", - "html_url": "https://github.com/hub4j/github-api/issues/348", - "id": 215463892, - "node_id": "MDU6SXNzdWUyMTU0NjM4OTI=", - "number": 348, - "title": "Skip and page selection support in PagedIterator/PagedIterable", - "user": { - "login": "JakubKahovec", - "id": 32606, - "node_id": "MDQ6VXNlcjMyNjA2", - "avatar_url": "https://avatars.githubusercontent.com/u/32606?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/JakubKahovec", - "html_url": "https://github.com/JakubKahovec", - "followers_url": "https://api.github.com/users/JakubKahovec/followers", - "following_url": "https://api.github.com/users/JakubKahovec/following{/other_user}", - "gists_url": "https://api.github.com/users/JakubKahovec/gists{/gist_id}", - "starred_url": "https://api.github.com/users/JakubKahovec/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/JakubKahovec/subscriptions", - "organizations_url": "https://api.github.com/users/JakubKahovec/orgs", - "repos_url": "https://api.github.com/users/JakubKahovec/repos", - "events_url": "https://api.github.com/users/JakubKahovec/events{/privacy}", - "received_events_url": "https://api.github.com/users/JakubKahovec/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - }, - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 11, - "created_at": "2017-03-20T15:47:54Z", - "updated_at": "2023-10-20T17:18:49Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Hello,\r\n\r\nwhen listing users the GitHub Api provides a parameter _since_ which allows you to specify an id of the user you've seen the last, when you start listing again (i.e after a crash) you skip the users you've seen. It'd great to have this parameter in the api i.e github.listUsers(sinceUserId). Do you think it would be feasible to add it there ?\r\n\r\nThank you\r\n\r\nJakub", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/348/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/348/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1614", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1614/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1614/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1614/events", - "html_url": "https://github.com/hub4j/github-api/issues/1614", - "id": 1571359526, - "node_id": "I_kwDOAAlq-s5dqQsm", - "number": 1614, - "title": "Feature Request - Total Count for PagedIterable", - "user": { - "login": "bchenghi", - "id": 57175876, - "node_id": "MDQ6VXNlcjU3MTc1ODc2", - "avatar_url": "https://avatars.githubusercontent.com/u/57175876?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bchenghi", - "html_url": "https://github.com/bchenghi", - "followers_url": "https://api.github.com/users/bchenghi/followers", - "following_url": "https://api.github.com/users/bchenghi/following{/other_user}", - "gists_url": "https://api.github.com/users/bchenghi/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bchenghi/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bchenghi/subscriptions", - "organizations_url": "https://api.github.com/users/bchenghi/orgs", - "repos_url": "https://api.github.com/users/bchenghi/repos", - "events_url": "https://api.github.com/users/bchenghi/events{/privacy}", - "received_events_url": "https://api.github.com/users/bchenghi/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 4, - "created_at": "2023-02-05T09:23:12Z", - "updated_at": "2023-10-14T07:49:04Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "I believe the GitHub API provides total number of pages in the response's Link header.\r\n\r\nThis could be useful, for instance, counting total number of commits in a repository. We can set page_size to 1 for listing commits on a GHRepository. Obtaining the total number of pages would tell us the total number of commits.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1614/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1614/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/988", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/988/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/988/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/988/events", - "html_url": "https://github.com/hub4j/github-api/issues/988", - "id": 753040877, - "node_id": "MDU6SXNzdWU3NTMwNDA4Nzc=", - "number": 988, - "title": "Updating branch protection details is very cumbersome", - "user": { - "login": "Vampire", - "id": 325196, - "node_id": "MDQ6VXNlcjMyNTE5Ng==", - "avatar_url": "https://avatars.githubusercontent.com/u/325196?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Vampire", - "html_url": "https://github.com/Vampire", - "followers_url": "https://api.github.com/users/Vampire/followers", - "following_url": "https://api.github.com/users/Vampire/following{/other_user}", - "gists_url": "https://api.github.com/users/Vampire/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Vampire/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Vampire/subscriptions", - "organizations_url": "https://api.github.com/users/Vampire/orgs", - "repos_url": "https://api.github.com/users/Vampire/repos", - "events_url": "https://api.github.com/users/Vampire/events{/privacy}", - "received_events_url": "https://api.github.com/users/Vampire/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 3, - "created_at": "2020-11-29T23:14:31Z", - "updated_at": "2023-08-14T19:39:15Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "I have a project where I have various branch protections enabled like linear history, required status checks, and so on and those restrictions should also be valid for administrators usually to not have a broken state on `master`.\r\n\r\nBut when creating a release, I actually want to push one merge commit to `master` and also without having the status checks run before as this would need manual intervention.\r\n\r\nSo I thought I simply make a Gradle task that removes the \"also for administrators\" flag before the push and another task that again enables that flag that is run after the task that pushes to `master`.\r\n\r\nThe problem is, that this lib does not allow to change only one detail, but you always have to supply the full set of protection rules. When I just did `....enableProtection().includeAdmins(false).enable()`, all other properties were unset.\r\nBut I also don't want to maintain the restrictions in the code.\r\nAnd taking the protections from the current protection object, setting them on the builder is extremely cumbersome and boiler-platey and also if some attributes get added, suddenly the logic will be wrong as it will not be copied over along except if you use reflection for this, which also would not work anyway due to inconsistencies in naming (e. g. `requiredChecks` vs. `contexts`).\r\n\r\nIt would be nice if this could be enhanced, for example by having some `copy attributes from this protection instance` method, or maybe even better an additional `updateProtection()` method that has all properties set like they currently are and then allows to update only the things that should be changed.\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/988/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/988/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1640", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1640/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1640/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1640/events", - "html_url": "https://github.com/hub4j/github-api/issues/1640", - "id": 1662049369, - "node_id": "I_kwDOAAlq-s5jENxZ", - "number": 1640, - "title": "Missing feature: detete an issue", - "user": { - "login": "sivantoledo", - "id": 1524989, - "node_id": "MDQ6VXNlcjE1MjQ5ODk=", - "avatar_url": "https://avatars.githubusercontent.com/u/1524989?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/sivantoledo", - "html_url": "https://github.com/sivantoledo", - "followers_url": "https://api.github.com/users/sivantoledo/followers", - "following_url": "https://api.github.com/users/sivantoledo/following{/other_user}", - "gists_url": "https://api.github.com/users/sivantoledo/gists{/gist_id}", - "starred_url": "https://api.github.com/users/sivantoledo/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/sivantoledo/subscriptions", - "organizations_url": "https://api.github.com/users/sivantoledo/orgs", - "repos_url": "https://api.github.com/users/sivantoledo/repos", - "events_url": "https://api.github.com/users/sivantoledo/events{/privacy}", - "received_events_url": "https://api.github.com/users/sivantoledo/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2023-04-11T08:59:01Z", - "updated_at": "2023-07-13T00:17:07Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Hi, I am using the library, thank you very much! Works great.\r\n\r\nI am using it mostly to manage issues, and I need a method to completely delete an issue, not only to close it. On the GitHub web interface there is a button to delete an issue, so I assume that this is possible via the API. However, there is no method in GHIssue to delete an issue.\r\n\r\nThe CLI tool \"gh\" does allow deleting an issue, so I assume that this is possible through the API. \r\n\r\nCan you please add a delete or removeIssue to GHIssue.java?\r\n\r\nThank you very much, Sivan", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1640/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1640/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1558", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1558/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1558/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1558/events", - "html_url": "https://github.com/hub4j/github-api/issues/1558", - "id": 1428248411, - "node_id": "I_kwDOAAlq-s5VIVdb", - "number": 1558, - "title": "GHRepository.getContent does not handle properly files bigger than 1MB", - "user": { - "login": "blacelle", - "id": 2117911, - "node_id": "MDQ6VXNlcjIxMTc5MTE=", - "avatar_url": "https://avatars.githubusercontent.com/u/2117911?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/blacelle", - "html_url": "https://github.com/blacelle", - "followers_url": "https://api.github.com/users/blacelle/followers", - "following_url": "https://api.github.com/users/blacelle/following{/other_user}", - "gists_url": "https://api.github.com/users/blacelle/gists{/gist_id}", - "starred_url": "https://api.github.com/users/blacelle/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/blacelle/subscriptions", - "organizations_url": "https://api.github.com/users/blacelle/orgs", - "repos_url": "https://api.github.com/users/blacelle/repos", - "events_url": "https://api.github.com/users/blacelle/events{/privacy}", - "received_events_url": "https://api.github.com/users/blacelle/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 4, - "created_at": "2022-10-29T12:44:40Z", - "updated_at": "2023-07-02T18:09:58Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nWhen considering a file with size >= 1MB, the library fails with `Unrecognized encoding: none` in org.kohsuke.github.GHContent.read()\r\n\r\n**To Reproduce**\r\nPush a file > 1MB, and try `GHRepository.getContent().read()`\r\n\r\n**Expected behavior**\r\nProperly fetching of the file content\r\n\r\n**Additional context**\r\nGitHub API has a specific behavior on large files: see https://docs.github.com/en/rest/repos/contents#size-limits.\r\n\r\n> Between 1-100 MB: Only the raw or object [custom media types](https://docs.github.com/rest/repos/contents#custom-media-types-for-repository-contents) are supported. Both will work as normal, except that when using the object media type, the content field will be an empty string and the encoding field will be \"none\". To get the contents of these larger files, use the raw media type.\r\n\r\n![image](https://user-images.githubusercontent.com/2117911/198832024-30c90bcf-cbb4-4e8a-bf72-77cf9c229f71.png)\r\n\r\nI suppose we would have in such a edge-case to rely on `Accept: application/vnd.github.v3.raw` header.\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1558/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1558/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1657", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1657/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1657/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1657/events", - "html_url": "https://github.com/hub4j/github-api/issues/1657", - "id": 1708788874, - "node_id": "I_kwDOAAlq-s5l2gyK", - "number": 1657, - "title": "createCommitStatus method return status success but the update is not happening in GITHUB ", - "user": { - "login": "bostsnow", - "id": 54145796, - "node_id": "MDQ6VXNlcjU0MTQ1Nzk2", - "avatar_url": "https://avatars.githubusercontent.com/u/54145796?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bostsnow", - "html_url": "https://github.com/bostsnow", - "followers_url": "https://api.github.com/users/bostsnow/followers", - "following_url": "https://api.github.com/users/bostsnow/following{/other_user}", - "gists_url": "https://api.github.com/users/bostsnow/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bostsnow/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bostsnow/subscriptions", - "organizations_url": "https://api.github.com/users/bostsnow/orgs", - "repos_url": "https://api.github.com/users/bostsnow/repos", - "events_url": "https://api.github.com/users/bostsnow/events{/privacy}", - "received_events_url": "https://api.github.com/users/bostsnow/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1686292366, - "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", - "name": "more information needed", - "color": "9ce1ed", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2023-05-14T01:50:36Z", - "updated_at": "2023-06-30T19:58:42Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Description**\r\nWe are using the version 1.307 and we call the createCommitStatus like below. \r\n\r\n```\r\nGHRepository repository = gitHub.getRepository(\r\n SLASH_JOINER.join(request.getOrg(), request.getRepo())\r\n );\r\n\r\nString headSha = repository\r\n .getPullRequest(request.getPullNumber())\r\n .getHead()\r\n .getSha();\r\n\r\nGHCommitStatus commitStatus = repository.createCommitStatus(\r\n headSha,\r\n GHCommitState.SUCCESS,\r\n someUrl,\r\n someDescription,\r\n context()\r\n );\r\n```\r\n\r\nThe response commitStatus status is '**SUCCESS**' but Github is still not updated.\r\nWhat really can go wrong here ? \r\n\r\n**Note**: Its not consistent, out of 10 call, 1 update is not happening.\r\n\r\n**Additional Detail**\r\nOn each commit we re-evaluate the logic and call the createCommitStatus. ", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1657/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1657/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1656", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1656/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1656/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1656/events", - "html_url": "https://github.com/hub4j/github-api/issues/1656", - "id": 1699052410, - "node_id": "I_kwDOAAlq-s5lRXt6", - "number": 1656, - "title": "Reattaching an entity to another client instance", - "user": { - "login": "Haarolean", - "id": 1494347, - "node_id": "MDQ6VXNlcjE0OTQzNDc=", - "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Haarolean", - "html_url": "https://github.com/Haarolean", - "followers_url": "https://api.github.com/users/Haarolean/followers", - "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", - "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", - "organizations_url": "https://api.github.com/users/Haarolean/orgs", - "repos_url": "https://api.github.com/users/Haarolean/repos", - "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", - "received_events_url": "https://api.github.com/users/Haarolean/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1686292366, - "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", - "name": "more information needed", - "color": "9ce1ed", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 4, - "created_at": "2023-05-07T12:53:01Z", - "updated_at": "2023-05-22T16:30:17Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Hi,\r\n\r\nI've got a situation like this:\r\n\r\n1. My app does listen to incoming webhooks, I parse the payload with an instance of a client authenticated **as an app** with a JWT token.\r\n2. After that, once I realize which type of payload I have I fetch some info, like an issue from the payload and I have to do additional things which require **app installation** authentication.\r\n\r\nWith this approach I get stuck with an instance of `GHIssue` fetch via and tied to a client instance authenticated as an app, but in order to do other things I have to reauthenticate as an app installation. I couldn't find a way to do this. A dirty approach would be changing `root` of the issue instance's `GitHubInteractiveObject`, but the field is r/o. \r\nIs there a way to do this now, am I missing something?\r\nif not, mind any suggestions? I'd suggest implementing a method to \"rebind\" an entity (`GitHubInteractiveObject`) to another provided instance of a github client. Any possible issues with that approach?\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1656/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1656/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/126", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/126/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/126/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/126/events", - "html_url": "https://github.com/hub4j/github-api/issues/126", - "id": 42053515, - "node_id": "MDU6SXNzdWU0MjA1MzUxNQ==", - "number": 126, - "title": "github-api does in not correctly distinguish between user and organisation ownership", - "user": { - "login": "msperisen", - "id": 2448228, - "node_id": "MDQ6VXNlcjI0NDgyMjg=", - "avatar_url": "https://avatars.githubusercontent.com/u/2448228?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/msperisen", - "html_url": "https://github.com/msperisen", - "followers_url": "https://api.github.com/users/msperisen/followers", - "following_url": "https://api.github.com/users/msperisen/following{/other_user}", - "gists_url": "https://api.github.com/users/msperisen/gists{/gist_id}", - "starred_url": "https://api.github.com/users/msperisen/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/msperisen/subscriptions", - "organizations_url": "https://api.github.com/users/msperisen/orgs", - "repos_url": "https://api.github.com/users/msperisen/repos", - "events_url": "https://api.github.com/users/msperisen/events{/privacy}", - "received_events_url": "https://api.github.com/users/msperisen/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 4, - "created_at": "2014-09-05T14:45:51Z", - "updated_at": "2023-05-05T13:48:03Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "owners are always returned as GHUsers instead of GHOrganizations or GHUsers. Many github api calls return users and organisations alike and the distinction is made based on the type field. Making GHPerson reflect that:\n\n``` java\n@JsonTypeInfo(use=JsonTypeInfo.Id.NAME,\n include=JsonTypeInfo.As.PROPERTY,\n property=\"type\")\n@JsonSubTypes({\n @JsonSubTypes.Type(value=GHUser.class, name=\"User\"),\n @JsonSubTypes.Type(value=GHOrganization.class, name=\"Organization\"),\n})\npublic abstract class GHPerson {\n```\n\nwill break a lot of owner related githup-api calls \n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/126/reactions", - "total_count": 2, - "+1": 2, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/126/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1645", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1645/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1645/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1645/events", - "html_url": "https://github.com/hub4j/github-api/issues/1645", - "id": 1679337516, - "node_id": "I_kwDOAAlq-s5kGKgs", - "number": 1645, - "title": "Allow creation of comments using line number, rather than position", - "user": { - "login": "alexec", - "id": 1142830, - "node_id": "MDQ6VXNlcjExNDI4MzA=", - "avatar_url": "https://avatars.githubusercontent.com/u/1142830?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/alexec", - "html_url": "https://github.com/alexec", - "followers_url": "https://api.github.com/users/alexec/followers", - "following_url": "https://api.github.com/users/alexec/following{/other_user}", - "gists_url": "https://api.github.com/users/alexec/gists{/gist_id}", - "starred_url": "https://api.github.com/users/alexec/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/alexec/subscriptions", - "organizations_url": "https://api.github.com/users/alexec/orgs", - "repos_url": "https://api.github.com/users/alexec/repos", - "events_url": "https://api.github.com/users/alexec/events{/privacy}", - "received_events_url": "https://api.github.com/users/alexec/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2023-04-22T05:02:43Z", - "updated_at": "2023-04-30T10:00:43Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "#1463 allowed you to list PR review comments with `line`. It did not allow you to create a comment using `line`. This is much easier than using position as it avoids a complex calculation.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1645/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1645/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1615", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1615/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1615/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1615/events", - "html_url": "https://github.com/hub4j/github-api/issues/1615", - "id": 1591180009, - "node_id": "I_kwDOAAlq-s5e13rp", - "number": 1615, - "title": "Feature Request: List Organization app installations", - "user": { - "login": "Har-sha-256", - "id": 56919509, - "node_id": "MDQ6VXNlcjU2OTE5NTA5", - "avatar_url": "https://avatars.githubusercontent.com/u/56919509?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Har-sha-256", - "html_url": "https://github.com/Har-sha-256", - "followers_url": "https://api.github.com/users/Har-sha-256/followers", - "following_url": "https://api.github.com/users/Har-sha-256/following{/other_user}", - "gists_url": "https://api.github.com/users/Har-sha-256/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Har-sha-256/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Har-sha-256/subscriptions", - "organizations_url": "https://api.github.com/users/Har-sha-256/orgs", - "repos_url": "https://api.github.com/users/Har-sha-256/repos", - "events_url": "https://api.github.com/users/Har-sha-256/events{/privacy}", - "received_events_url": "https://api.github.com/users/Har-sha-256/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2023-02-20T05:40:39Z", - "updated_at": "2023-04-27T01:14:38Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Feature Request: GET /orgs/{org}/installations\r\n\r\nhttps://docs.github.com/en/rest/orgs/orgs?apiVersion=2022-11-28#list-app-installations-for-an-organization\r\n\r\nRequesting this api for an Organization object", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1615/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1615/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1646", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1646/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1646/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1646/events", - "html_url": "https://github.com/hub4j/github-api/issues/1646", - "id": 1680231459, - "node_id": "I_kwDOAAlq-s5kJkwj", - "number": 1646, - "title": "Enhancement: ParseEventPayload: Parse the event type automatically", - "user": { - "login": "Haarolean", - "id": 1494347, - "node_id": "MDQ6VXNlcjE0OTQzNDc=", - "avatar_url": "https://avatars.githubusercontent.com/u/1494347?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Haarolean", - "html_url": "https://github.com/Haarolean", - "followers_url": "https://api.github.com/users/Haarolean/followers", - "following_url": "https://api.github.com/users/Haarolean/following{/other_user}", - "gists_url": "https://api.github.com/users/Haarolean/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Haarolean/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Haarolean/subscriptions", - "organizations_url": "https://api.github.com/users/Haarolean/orgs", - "repos_url": "https://api.github.com/users/Haarolean/repos", - "events_url": "https://api.github.com/users/Haarolean/events{/privacy}", - "received_events_url": "https://api.github.com/users/Haarolean/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2023-04-24T00:06:56Z", - "updated_at": "2023-04-27T01:13:19Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Hi, I noticed the following documentation on `GitHub#parseEventPayload`:\r\n\r\n```\r\n[...] Unfortunately, hook script payloads aren't self-descriptive, so you need to know the type of payload you are expecting.\r\n```\r\n\r\nAs far as I see, the event type is present within `x-github-event` header of the incoming hook request. \r\n\r\nAs stated [here](https://docs.github.com/webhooks-and-events/webhooks/webhook-events-and-payloads#installation):\r\n\"image\"\r\n\r\nI've checked the request and the event name does really match the ones available on the aforementioned page. \r\n\r\nCould we match the event type strings to `GHEventPayload` implementations so we don't have to provide the type?\r\n\r\nP.S. Thanks for the great library! ❤️\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1646/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1646/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/837", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/837/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/837/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/837/events", - "html_url": "https://github.com/hub4j/github-api/issues/837", - "id": 631036684, - "node_id": "MDU6SXNzdWU2MzEwMzY2ODQ=", - "number": 837, - "title": "API should expose ability to create and delete impersonation OAuth token", - "user": { - "login": "bmuschko", - "id": 440872, - "node_id": "MDQ6VXNlcjQ0MDg3Mg==", - "avatar_url": "https://avatars.githubusercontent.com/u/440872?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bmuschko", - "html_url": "https://github.com/bmuschko", - "followers_url": "https://api.github.com/users/bmuschko/followers", - "following_url": "https://api.github.com/users/bmuschko/following{/other_user}", - "gists_url": "https://api.github.com/users/bmuschko/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bmuschko/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bmuschko/subscriptions", - "organizations_url": "https://api.github.com/users/bmuschko/orgs", - "repos_url": "https://api.github.com/users/bmuschko/repos", - "events_url": "https://api.github.com/users/bmuschko/events{/privacy}", - "received_events_url": "https://api.github.com/users/bmuschko/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2020-06-04T18:00:57Z", - "updated_at": "2023-04-15T22:49:23Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Currently, this library does not expose methods for the API that can [Create an impersonation OAuth token](https://developer.github.com/enterprise/2.20/v3/enterprise-admin/users/#create-an-impersonation-oauth-token) or [Delete an impersonation OAuth token](https://developer.github.com/enterprise/2.20/v3/enterprise-admin/users/#delete-an-impersonation-oauth-token).", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/837/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/837/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1631", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1631/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1631/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1631/events", - "html_url": "https://github.com/hub4j/github-api/issues/1631", - "id": 1632667135, - "node_id": "I_kwDOAAlq-s5hUIX_", - "number": 1631, - "title": "Add support for GitHub REST API versioning", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2023-03-20T18:38:35Z", - "updated_at": "2023-03-20T18:39:05Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "GitHub REST API is now versioned. https://docs.github.com/en/rest/overview/api-versions?apiVersion=2022-11-28\r\n\r\nI've already filed another issue around supporting different versions of GitHub Server. This is related. \r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1631/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1631/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1598", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1598/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1598/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1598/events", - "html_url": "https://github.com/hub4j/github-api/issues/1598", - "id": 1527710615, - "node_id": "I_kwDOAAlq-s5bDwOX", - "number": 1598, - "title": "GHInvitation getId always returns 0", - "user": { - "login": "noah-lawrence", - "id": 35925330, - "node_id": "MDQ6VXNlcjM1OTI1MzMw", - "avatar_url": "https://avatars.githubusercontent.com/u/35925330?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/noah-lawrence", - "html_url": "https://github.com/noah-lawrence", - "followers_url": "https://api.github.com/users/noah-lawrence/followers", - "following_url": "https://api.github.com/users/noah-lawrence/following{/other_user}", - "gists_url": "https://api.github.com/users/noah-lawrence/gists{/gist_id}", - "starred_url": "https://api.github.com/users/noah-lawrence/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/noah-lawrence/subscriptions", - "organizations_url": "https://api.github.com/users/noah-lawrence/orgs", - "repos_url": "https://api.github.com/users/noah-lawrence/repos", - "events_url": "https://api.github.com/users/noah-lawrence/events{/privacy}", - "received_events_url": "https://api.github.com/users/noah-lawrence/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2023-01-10T16:49:56Z", - "updated_at": "2023-01-31T20:32:33Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nGHInvitation getId returns 'id' from GHObject, which defaults to 0. However, the correct invitation id is available in the private 'id' field on GHInvitation.\r\n\r\n**To Reproduce**\r\n1. Create a GitHub repository\r\n2. Add a collaborator (an invitation will be sent)\r\n3. Run below code: \r\n```java\r\nghRepository.listInvitations().forEach(invitation -> System.out.println(invitation.getId()));\r\n```\r\n4. 0 is printed for each invitation, rather than the invitation id.\r\n\r\n**Expected behavior**\r\nThe correct invitation id is printed, instead of 0.\r\n\r\n**Additional context**\r\nI would like to be able to delete a GitHub invitation as an account owner of a repository.\r\nGitHub's API has [this](https://docs.github.com/en/rest/collaborators/invitations?apiVersion=2022-11-28#delete-a-repository-invitation) endpoint to delete an invitation manually, but the invitation id is required.\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1598/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1598/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1580", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1580/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1580/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1580/events", - "html_url": "https://github.com/hub4j/github-api/issues/1580", - "id": 1501841928, - "node_id": "I_kwDOAAlq-s5ZhEoI", - "number": 1580, - "title": "URISyntaxException when I search in repository", - "user": { - "login": "turbanoff", - "id": 741251, - "node_id": "MDQ6VXNlcjc0MTI1MQ==", - "avatar_url": "https://avatars.githubusercontent.com/u/741251?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/turbanoff", - "html_url": "https://github.com/turbanoff", - "followers_url": "https://api.github.com/users/turbanoff/followers", - "following_url": "https://api.github.com/users/turbanoff/following{/other_user}", - "gists_url": "https://api.github.com/users/turbanoff/gists{/gist_id}", - "starred_url": "https://api.github.com/users/turbanoff/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/turbanoff/subscriptions", - "organizations_url": "https://api.github.com/users/turbanoff/orgs", - "repos_url": "https://api.github.com/users/turbanoff/repos", - "events_url": "https://api.github.com/users/turbanoff/events{/privacy}", - "received_events_url": "https://api.github.com/users/turbanoff/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2022-12-18T09:57:57Z", - "updated_at": "2023-01-25T17:52:55Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nI noticed that search in repositories is unreliable sometimes and could fail with `URISyntaxException`.\r\nExample:\r\n```\r\nException in thread \"main\" org.kohsuke.github.HttpException: Server returned HTTP response code: -1, message: 'null' for URL: https://api.github.com/repositories/376556942/contents/tasks/]?ref=bbdc0107c309ee7c340b99d537b0db460e30bdf4\r\n\tat org.kohsuke.github.GitHubClient.interpretApiError(GitHubClient.java:596)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:449)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:403)\r\n\tat org.kohsuke.github.Requester.fetchInto(Requester.java:102)\r\n\tat org.kohsuke.github.GHContent.refresh(GHContent.java:423)\r\n\tat org.kohsuke.github.Refreshable.refresh(Refreshable.java:30)\r\n\tat org.kohsuke.github.GHContent.read(GHContent.java:188)\r\n\tat org.christmas.token.GithubApi.main(GithubApi.java:21)\r\nCaused by: java.io.IOException: Invalid URL\r\n\tat org.kohsuke.github.extras.HttpClientGitHubConnector.send(HttpClientGitHubConnector.java:53)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:432)\r\n\t... 6 more\r\nCaused by: java.net.URISyntaxException: Illegal character in path at index 61: https://api.github.com/repositories/376556942/contents/tasks/]?ref=bbdc0107c309ee7c340b99d537b0db460e30bdf4\r\n\tat java.base/java.net.URI$Parser.fail(URI.java:2974)\r\n\tat java.base/java.net.URI$Parser.checkChars(URI.java:3145)\r\n\tat java.base/java.net.URI$Parser.parseHierarchical(URI.java:3227)\r\n\tat java.base/java.net.URI$Parser.parse(URI.java:3175)\r\n\tat java.base/java.net.URI.(URI.java:623)\r\n\tat java.base/java.net.URL.toURI(URL.java:1056)\r\n\tat org.kohsuke.github.extras.HttpClientGitHubConnector.send(HttpClientGitHubConnector.java:51)\r\n\t... 7 more\r\n```\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\nRun following program:\r\n```\r\n public static void main(String[] args) throws Exception {\r\n GitHub gitHub = GitHub.connectUsingOAuth(GITHUB_TOKEN);\r\n PagedSearchIterable iterable = gitHub.searchContent()\r\n .q(\"print\")\r\n .repo(\"worlddeleteRin/vkproj\")\r\n .list();\r\n for (GHContent content : iterable) {\r\n try (InputStream read = content.read()) {\r\n ByteArrayOutputStream baos = new ByteArrayOutputStream();\r\n read.transferTo(baos);\r\n System.out.println(baos.toString(StandardCharsets.UTF_8));\r\n }\r\n }\r\n }\r\n```\r\nand check errors in the output\r\n\r\n**Expected behavior**\r\nLibrary could handle unexpected symbols in URLs better. Escape them?\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1580/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1580/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1582", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1582/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1582/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1582/events", - "html_url": "https://github.com/hub4j/github-api/issues/1582", - "id": 1503158949, - "node_id": "I_kwDOAAlq-s5ZmGKl", - "number": 1582, - "title": "Enhancement: support GitHub API to `rerun-failed-jobs`", - "user": { - "login": "ahus1", - "id": 3957921, - "node_id": "MDQ6VXNlcjM5NTc5MjE=", - "avatar_url": "https://avatars.githubusercontent.com/u/3957921?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/ahus1", - "html_url": "https://github.com/ahus1", - "followers_url": "https://api.github.com/users/ahus1/followers", - "following_url": "https://api.github.com/users/ahus1/following{/other_user}", - "gists_url": "https://api.github.com/users/ahus1/gists{/gist_id}", - "starred_url": "https://api.github.com/users/ahus1/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/ahus1/subscriptions", - "organizations_url": "https://api.github.com/users/ahus1/orgs", - "repos_url": "https://api.github.com/users/ahus1/repos", - "events_url": "https://api.github.com/users/ahus1/events{/privacy}", - "received_events_url": "https://api.github.com/users/ahus1/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2022-12-19T15:35:48Z", - "updated_at": "2023-01-25T17:51:11Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "When looking at `GHWorkflowRun`, there is the method `rerun()` but no method to rerun only failed tests. \r\n\r\nIt's documented in the API here: https://docs.github.com/en/rest/actions/workflow-runs?apiVersion=2022-11-28#re-run-failed-jobs-from-a-workflow-run\r\n\r\nThis has been added to the octokit client in June 15, see https://github.com/octokit/plugin-rest-endpoint-methods.js/releases/tag/v5.14.0\r\n\r\nIt would be great to have this in the Java API as well. \r\n\r\nThanks!", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1582/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1582/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/452", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/452/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/452/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/452/events", - "html_url": "https://github.com/hub4j/github-api/issues/452", - "id": 354016699, - "node_id": "MDU6SXNzdWUzNTQwMTY2OTk=", - "number": 452, - "title": "Support for attachments on Issues (Add, Get, and Remove)", - "user": { - "login": "GaborCsikos", - "id": 5442111, - "node_id": "MDQ6VXNlcjU0NDIxMTE=", - "avatar_url": "https://avatars.githubusercontent.com/u/5442111?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/GaborCsikos", - "html_url": "https://github.com/GaborCsikos", - "followers_url": "https://api.github.com/users/GaborCsikos/followers", - "following_url": "https://api.github.com/users/GaborCsikos/following{/other_user}", - "gists_url": "https://api.github.com/users/GaborCsikos/gists{/gist_id}", - "starred_url": "https://api.github.com/users/GaborCsikos/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/GaborCsikos/subscriptions", - "organizations_url": "https://api.github.com/users/GaborCsikos/orgs", - "repos_url": "https://api.github.com/users/GaborCsikos/repos", - "events_url": "https://api.github.com/users/GaborCsikos/events{/privacy}", - "received_events_url": "https://api.github.com/users/GaborCsikos/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1686290078, - "node_id": "MDU6TGFiZWwxNjg2MjkwMDc4", - "url": "https://api.github.com/repos/hub4j/github-api/labels/external", - "name": "external", - "color": "a0a0a0", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 3, - "created_at": "2018-08-25T14:28:54Z", - "updated_at": "2023-01-02T21:30:41Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "I want to download attachments added to Github issue.\r\nUsually an attachment is added to in Issue into the body of the comment.\r\n\r\nMy problem is the GHIssueComment has a body as a String. So i can not get the attachments.\r\n\r\nI could see that the GHRepository has a method getBlob(String blobSha)\r\nBut I do not know that this is what i need, also i do not know the blobSha.\r\n\r\nHow could I get the attachments uploaded to issues?", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/452/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/452/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1549", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1549/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1549/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1549/events", - "html_url": "https://github.com/hub4j/github-api/issues/1549", - "id": 1414681945, - "node_id": "I_kwDOAAlq-s5UUlVZ", - "number": 1549, - "title": "Feature Request: Get template repo details from created repository", - "user": { - "login": "AmyShields-EN0085", - "id": 82226842, - "node_id": "MDQ6VXNlcjgyMjI2ODQy", - "avatar_url": "https://avatars.githubusercontent.com/u/82226842?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/AmyShields-EN0085", - "html_url": "https://github.com/AmyShields-EN0085", - "followers_url": "https://api.github.com/users/AmyShields-EN0085/followers", - "following_url": "https://api.github.com/users/AmyShields-EN0085/following{/other_user}", - "gists_url": "https://api.github.com/users/AmyShields-EN0085/gists{/gist_id}", - "starred_url": "https://api.github.com/users/AmyShields-EN0085/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/AmyShields-EN0085/subscriptions", - "organizations_url": "https://api.github.com/users/AmyShields-EN0085/orgs", - "repos_url": "https://api.github.com/users/AmyShields-EN0085/repos", - "events_url": "https://api.github.com/users/AmyShields-EN0085/events{/privacy}", - "received_events_url": "https://api.github.com/users/AmyShields-EN0085/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2022-10-19T10:06:04Z", - "updated_at": "2022-12-14T14:04:23Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "It would be great to be able to get the template repository details from a created repo - so you could know what repository the created repo is based off.\r\n\r\nThis information is available through the rest API. \r\n\r\nExample on a simple GET request to https://api.github.com/repos/org/reponame - I would love to expose the template_repository json object\r\n```\r\n{\r\n \"id\":xxxx,\r\n \"node_id\": \"R_kgDOIQCw0A\",\r\n \"name\": \"test-generic-repo\",\r\n \"full_name\": \"orgt/test-generic-repo\",\r\n \"private\": true,\r\n \"**template_repository**\": {\r\n \"id\": 470521023,\r\n \"node_id\": \"R_kgDOHAuUvw\",\r\n \"name\": \"my-template\",\r\n \"full_name\": \"org/my-template\",\r\n \"private\": true,\r\n \"owner\": {\r\n \"login\": \"org\",\r\n \"id\": 69310803,\r\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/69310803?v=4\",\r\n \"gravatar_id\": \"\",\r\n \"url\": \"https://api.github.com/users/org\",\r\n \"html_url\": \"https://github.com/org\",\r\n \"followers_url\": \"https://api.github.com/users/org/followers\",\r\n \"following_url\": \"https://api.github.com/users/org/following{/other_user}\",\r\n \"gists_url\": \"https://api.github.com/users/org/gists{/gist_id}\",\r\n \"starred_url\": \"https://api.github.com/users/org/starred{/owner}{/repo}\",\r\n \"subscriptions_url\": \"https://api.github.com/users/orgt/subscriptions\",\r\n \"organizations_url\": \"https://api.github.com/users/org/orgs\",\r\n \"repos_url\": \"https://api.github.com/users/org/repos\",\r\n \"events_url\": \"https://api.github.com/users/org/events{/privacy}\",\r\n \"received_events_url\": \"https://api.github.com/users/org/received_events\",\r\n \"type\": \"Organization\",\r\n \"site_admin\": false\r\n }\r\n \"network_count\": 0,\r\n \"subscribers_count\": 0\r\n}\r\n```", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1549/reactions", - "total_count": 2, - "+1": 2, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1549/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1569", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1569/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1569/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1569/events", - "html_url": "https://github.com/hub4j/github-api/issues/1569", - "id": 1457757937, - "node_id": "I_kwDOAAlq-s5W457x", - "number": 1569, - "title": "GHHooks does not get all the hooks with pagination", - "user": { - "login": "sundergopalsingh", - "id": 8762655, - "node_id": "MDQ6VXNlcjg3NjI2NTU=", - "avatar_url": "https://avatars.githubusercontent.com/u/8762655?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/sundergopalsingh", - "html_url": "https://github.com/sundergopalsingh", - "followers_url": "https://api.github.com/users/sundergopalsingh/followers", - "following_url": "https://api.github.com/users/sundergopalsingh/following{/other_user}", - "gists_url": "https://api.github.com/users/sundergopalsingh/gists{/gist_id}", - "starred_url": "https://api.github.com/users/sundergopalsingh/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/sundergopalsingh/subscriptions", - "organizations_url": "https://api.github.com/users/sundergopalsingh/orgs", - "repos_url": "https://api.github.com/users/sundergopalsingh/repos", - "events_url": "https://api.github.com/users/sundergopalsingh/events{/privacy}", - "received_events_url": "https://api.github.com/users/sundergopalsingh/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2022-11-21T11:14:16Z", - "updated_at": "2022-11-21T23:29:53Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**getHooks() does not get all the hooks and only gets the first page of the response**\r\nGHHooks getHooks() method does not get all the hooks when called and only retrieves the first page from the github call.\r\n\r\nhttps://github.com/hub4j/github-api/blob/github-api-1.115/src/main/java/org/kohsuke/github/GHHooks.java#L29\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behaviour:\r\n1. Create a repository with more than 30 webhooks , say 100\r\n2. Using Github api plugin call the getHooks() method on the above repository and you would realise that only first 30 hooks are being fetched.\r\n\r\n**Expected behavior**\r\ngetHooks() should return all the hooks available even if it has multiple pages or provide an option to paginate through the response.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: Linux\r\n - Version 1.115\r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1569/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1569/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1491", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1491/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1491/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1491/events", - "html_url": "https://github.com/hub4j/github-api/issues/1491", - "id": 1318769079, - "node_id": "I_kwDOAAlq-s5OmtG3", - "number": 1491, - "title": "Add `state_reason` for `GHIssue`", - "user": { - "login": "piotrooo", - "id": 2005054, - "node_id": "MDQ6VXNlcjIwMDUwNTQ=", - "avatar_url": "https://avatars.githubusercontent.com/u/2005054?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/piotrooo", - "html_url": "https://github.com/piotrooo", - "followers_url": "https://api.github.com/users/piotrooo/followers", - "following_url": "https://api.github.com/users/piotrooo/following{/other_user}", - "gists_url": "https://api.github.com/users/piotrooo/gists{/gist_id}", - "starred_url": "https://api.github.com/users/piotrooo/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/piotrooo/subscriptions", - "organizations_url": "https://api.github.com/users/piotrooo/orgs", - "repos_url": "https://api.github.com/users/piotrooo/repos", - "events_url": "https://api.github.com/users/piotrooo/events{/privacy}", - "received_events_url": "https://api.github.com/users/piotrooo/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2022-07-26T21:25:47Z", - "updated_at": "2022-11-12T01:19:20Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "There is missing property `state_reason`, should be added with appropriate enum.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1491/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1491/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1545", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1545/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1545/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1545/events", - "html_url": "https://github.com/hub4j/github-api/issues/1545", - "id": 1407753565, - "node_id": "I_kwDOAAlq-s5T6J1d", - "number": 1545, - "title": "ghRepositoryStatistics.getCodeFrequency() always report a null pointer error", - "user": { - "login": "JasonWu0506", - "id": 104332592, - "node_id": "U_kgDOBjf9MA", - "avatar_url": "https://avatars.githubusercontent.com/u/104332592?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/JasonWu0506", - "html_url": "https://github.com/JasonWu0506", - "followers_url": "https://api.github.com/users/JasonWu0506/followers", - "following_url": "https://api.github.com/users/JasonWu0506/following{/other_user}", - "gists_url": "https://api.github.com/users/JasonWu0506/gists{/gist_id}", - "starred_url": "https://api.github.com/users/JasonWu0506/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/JasonWu0506/subscriptions", - "organizations_url": "https://api.github.com/users/JasonWu0506/orgs", - "repos_url": "https://api.github.com/users/JasonWu0506/repos", - "events_url": "https://api.github.com/users/JasonWu0506/events{/privacy}", - "received_events_url": "https://api.github.com/users/JasonWu0506/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2022-10-13T12:55:24Z", - "updated_at": "2022-10-21T18:54:30Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nA clear and concise description of what the bug is.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Go to '...'\r\n2. Click on '....'\r\n3. Scroll down to '....'\r\n4. See error\r\n```\r\n GitHub github = new GitHubBuilder().withOAuthToken(strOAuthToken).build();\r\n ghRepository = github.getUser(strOrg).getRepository(strRepo);\r\n \r\n \r\n GHRepositoryStatistics ghRepositoryStatistics = ghRepository.getStatistics();\r\n List codeFrequencies = ghRepositoryStatistics.getCodeFrequency();\r\n```\r\n\r\nResult:\r\n```\r\nException in thread \"main\" java.lang.NullPointerException\r\n\tat java.base/java.util.Objects.requireNonNull(Objects.java:208)\r\n\tat java.base/java.util.Arrays$ArrayList.(Arrays.java:4137)\r\n\tat java.base/java.util.Arrays.asList(Arrays.java:4122)\r\n\tat org.kohsuke.github.GHRepositoryStatistics.getCodeFrequency(GHRepositoryStatistics.java:319)\r\n```\r\n\r\n \r\n org.kohsuke \r\n github-api \r\n 1.313 \r\n \r\n\r\n**Expected behavior**\r\nA clear and concise description of what you expected to happen.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: [e.g. iOS]\r\n - Browser [e.g. chrome, safari]\r\n - Version [e.g. 22]\r\n\r\n**Additional context**\r\nAdd any other context about the problem here.\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1545/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1545/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - } - ] -} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/6-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/6-search_issues.json deleted file mode 100644 index 4011efaf38..0000000000 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/6-search_issues.json +++ /dev/null @@ -1,2709 +0,0 @@ -{ - "total_count": 164, - "incomplete_results": false, - "items": [ - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1547", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1547/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1547/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1547/events", - "html_url": "https://github.com/hub4j/github-api/issues/1547", - "id": 1411783746, - "node_id": "I_kwDOAAlq-s5UJhxC", - "number": 1547, - "title": "Feature Request: expose shallow event data", - "user": { - "login": "devinrsmith", - "id": 6764691, - "node_id": "MDQ6VXNlcjY3NjQ2OTE=", - "avatar_url": "https://avatars.githubusercontent.com/u/6764691?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/devinrsmith", - "html_url": "https://github.com/devinrsmith", - "followers_url": "https://api.github.com/users/devinrsmith/followers", - "following_url": "https://api.github.com/users/devinrsmith/following{/other_user}", - "gists_url": "https://api.github.com/users/devinrsmith/gists{/gist_id}", - "starred_url": "https://api.github.com/users/devinrsmith/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/devinrsmith/subscriptions", - "organizations_url": "https://api.github.com/users/devinrsmith/orgs", - "repos_url": "https://api.github.com/users/devinrsmith/repos", - "events_url": "https://api.github.com/users/devinrsmith/events{/privacy}", - "received_events_url": "https://api.github.com/users/devinrsmith/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": { - "login": "devinrsmith", - "id": 6764691, - "node_id": "MDQ6VXNlcjY3NjQ2OTE=", - "avatar_url": "https://avatars.githubusercontent.com/u/6764691?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/devinrsmith", - "html_url": "https://github.com/devinrsmith", - "followers_url": "https://api.github.com/users/devinrsmith/followers", - "following_url": "https://api.github.com/users/devinrsmith/following{/other_user}", - "gists_url": "https://api.github.com/users/devinrsmith/gists{/gist_id}", - "starred_url": "https://api.github.com/users/devinrsmith/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/devinrsmith/subscriptions", - "organizations_url": "https://api.github.com/users/devinrsmith/orgs", - "repos_url": "https://api.github.com/users/devinrsmith/repos", - "events_url": "https://api.github.com/users/devinrsmith/events{/privacy}", - "received_events_url": "https://api.github.com/users/devinrsmith/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "assignees": [ - { - "login": "devinrsmith", - "id": 6764691, - "node_id": "MDQ6VXNlcjY3NjQ2OTE=", - "avatar_url": "https://avatars.githubusercontent.com/u/6764691?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/devinrsmith", - "html_url": "https://github.com/devinrsmith", - "followers_url": "https://api.github.com/users/devinrsmith/followers", - "following_url": "https://api.github.com/users/devinrsmith/following{/other_user}", - "gists_url": "https://api.github.com/users/devinrsmith/gists{/gist_id}", - "starred_url": "https://api.github.com/users/devinrsmith/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/devinrsmith/subscriptions", - "organizations_url": "https://api.github.com/users/devinrsmith/orgs", - "repos_url": "https://api.github.com/users/devinrsmith/repos", - "events_url": "https://api.github.com/users/devinrsmith/events{/privacy}", - "received_events_url": "https://api.github.com/users/devinrsmith/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - } - ], - "milestone": null, - "comments": 1, - "created_at": "2022-10-17T15:26:34Z", - "updated_at": "2022-10-21T18:54:05Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "First time user at `github-api`...\r\n\r\nI'm interested in consuming the GH event API for organizations. I see that `org.kohsuke.github.GHOrganization#listEvents` returns `org.kohsuke.github.GHEventInfo`s.\r\n\r\nOf particular importance for my use case is minimizing API requests. I see some fields in `GHEventInfo` that are commented as \"shallow\"; I'm assuming this means they have been partially filled in via the GH event response? Is there any reason these shallow objects can't / shouldn't be exposed to the end user?\r\n\r\nI'm hoping all of the commons properties listed https://docs.github.com/en/developers/webhooks-and-events/events/github-event-types#event-object-common-properties can be accessible without additional API calls. It looks like the field `public` can be added as well?\r\n\r\nHappy to follow up with a PR if this sounds appropriate. Thanks!", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1547/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1547/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1520", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1520/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1520/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1520/events", - "html_url": "https://github.com/hub4j/github-api/issues/1520", - "id": 1361648807, - "node_id": "I_kwDOAAlq-s5RKRyn", - "number": 1520, - "title": "List check runs in a check suite", - "user": { - "login": "lppedd", - "id": 19871649, - "node_id": "MDQ6VXNlcjE5ODcxNjQ5", - "avatar_url": "https://avatars.githubusercontent.com/u/19871649?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/lppedd", - "html_url": "https://github.com/lppedd", - "followers_url": "https://api.github.com/users/lppedd/followers", - "following_url": "https://api.github.com/users/lppedd/following{/other_user}", - "gists_url": "https://api.github.com/users/lppedd/gists{/gist_id}", - "starred_url": "https://api.github.com/users/lppedd/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/lppedd/subscriptions", - "organizations_url": "https://api.github.com/users/lppedd/orgs", - "repos_url": "https://api.github.com/users/lppedd/repos", - "events_url": "https://api.github.com/users/lppedd/events{/privacy}", - "received_events_url": "https://api.github.com/users/lppedd/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2022-09-05T09:22:00Z", - "updated_at": "2022-10-21T18:23:54Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "As of now it doesn't seem possible to list check runs under a specific suite.\r\nThis is particularly useful when a user request an entire suite to be re-run.\r\nSee https://docs.github.com/en/rest/checks/runs#list-check-runs-in-a-check-suite\r\n\r\nIs there some workaround?", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1520/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1520/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1543", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1543/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1543/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1543/events", - "html_url": "https://github.com/hub4j/github-api/issues/1543", - "id": 1400158233, - "node_id": "I_kwDOAAlq-s5TdLgZ", - "number": 1543, - "title": "Should support `parent` team objects", - "user": { - "login": "Callek", - "id": 1415602, - "node_id": "MDQ6VXNlcjE0MTU2MDI=", - "avatar_url": "https://avatars.githubusercontent.com/u/1415602?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Callek", - "html_url": "https://github.com/Callek", - "followers_url": "https://api.github.com/users/Callek/followers", - "following_url": "https://api.github.com/users/Callek/following{/other_user}", - "gists_url": "https://api.github.com/users/Callek/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Callek/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Callek/subscriptions", - "organizations_url": "https://api.github.com/users/Callek/orgs", - "repos_url": "https://api.github.com/users/Callek/repos", - "events_url": "https://api.github.com/users/Callek/events{/privacy}", - "received_events_url": "https://api.github.com/users/Callek/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1686292366, - "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", - "name": "more information needed", - "color": "9ce1ed", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2022-10-06T18:54:09Z", - "updated_at": "2022-10-21T18:20:12Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "In `GHTeam` objects, there should be support exposing the result of the `parent` return from `/user/teams` .\r\n\r\nIdeally this would be another `GHTeam` object, and bonus points if `getMyTeams()` [1] supports fetching all parents as well (possibly with an arg for consumers to request that functionality).\r\n\r\nA clear and concise description of what the bug is.\r\n\r\n**Expected behavior**\r\nA clear and concise description of what you expected to happen.\r\n\r\n`.getMyTeams()` returns an `GHTeam` objects with references to their parent team.\r\nBonus: `.getMyTeams(True)` (or some such) gets not only my *direct* teams, but any parent teams I'm a part of.\r\n\r\n[1] - https://github.com/hub4j/github-api/blob/4bba9680706785d6385ed69243f41a5f36757463/src/main/java/org/kohsuke/github/GitHub.java#L870\r\n\r\n** Extra Context **\r\nThe lack of `parent` being exposed makes https://issues.jenkins.io/browse/JENKINS-63051 harder to solve.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1543/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1543/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1540", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1540/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1540/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1540/events", - "html_url": "https://github.com/hub4j/github-api/issues/1540", - "id": 1395378016, - "node_id": "I_kwDOAAlq-s5TK8dg", - "number": 1540, - "title": "Issue with GHRepositoryStatistics.getContibutorStats(true)", - "user": { - "login": "goldbal330", - "id": 62764301, - "node_id": "MDQ6VXNlcjYyNzY0MzAx", - "avatar_url": "https://avatars.githubusercontent.com/u/62764301?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/goldbal330", - "html_url": "https://github.com/goldbal330", - "followers_url": "https://api.github.com/users/goldbal330/followers", - "following_url": "https://api.github.com/users/goldbal330/following{/other_user}", - "gists_url": "https://api.github.com/users/goldbal330/gists{/gist_id}", - "starred_url": "https://api.github.com/users/goldbal330/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/goldbal330/subscriptions", - "organizations_url": "https://api.github.com/users/goldbal330/orgs", - "repos_url": "https://api.github.com/users/goldbal330/repos", - "events_url": "https://api.github.com/users/goldbal330/events{/privacy}", - "received_events_url": "https://api.github.com/users/goldbal330/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2022-10-03T21:49:18Z", - "updated_at": "2022-10-04T07:45:35Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "https://github.com/hub4j/github-api/blob/4bba9680706785d6385ed69243f41a5f36757463/src/main/java/org/kohsuke/github/GHRepositoryStatistics.java#L67\r\n\r\nThis method will never invoke Thread.sleep if the data is not ready.\r\n\r\n ```\nif (stats == null && waitTillReady) {\r\n for (int i = 0; i < MAX_WAIT_ITERATIONS; i += 1) {\r\n // Wait a few seconds and try again.\r\n Thread.sleep(WAIT_SLEEP_INTERVAL);\r\n stats = getContributorStatsImpl();\r\n if (stats != null) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\nstats = getContributorStatsImpl() will never return null.\r\n```\n\r\nhttps://github.com/hub4j/github-api/blob/4bba9680706785d6385ed69243f41a5f36757463/src/main/java/org/kohsuke/github/Requester.java#L169\r\n\r\nwill always create a new instance of GitHubPageContentsIterable.\r\nHence, if the data is still being cached by the server, the blocking will never happen and empty result will be returned back.\r\n\r\n**Expected behavior**\r\nBased on GitHub API documentation: https://docs.github.com/en/rest/metrics/statistics#a-word-about-caching code 202 is returned back when the statistics data is not ready. Ideally status code of 202 returned by the REST call would be driving sleep and retry in GHRepositoryStatistics class. If the data is not ready, the method would block till the data is ready and return then.\r\n\r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1540/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1540/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/423", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/423/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/423/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/423/events", - "html_url": "https://github.com/hub4j/github-api/issues/423", - "id": 302121839, - "node_id": "MDU6SXNzdWUzMDIxMjE4Mzk=", - "number": 423, - "title": "Upgrade documentation and supply examples", - "user": { - "login": "adam-arold", - "id": 1253248, - "node_id": "MDQ6VXNlcjEyNTMyNDg=", - "avatar_url": "https://avatars.githubusercontent.com/u/1253248?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/adam-arold", - "html_url": "https://github.com/adam-arold", - "followers_url": "https://api.github.com/users/adam-arold/followers", - "following_url": "https://api.github.com/users/adam-arold/following{/other_user}", - "gists_url": "https://api.github.com/users/adam-arold/gists{/gist_id}", - "starred_url": "https://api.github.com/users/adam-arold/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/adam-arold/subscriptions", - "organizations_url": "https://api.github.com/users/adam-arold/orgs", - "repos_url": "https://api.github.com/users/adam-arold/repos", - "events_url": "https://api.github.com/users/adam-arold/events{/privacy}", - "received_events_url": "https://api.github.com/users/adam-arold/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 2070644911, - "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", - "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", - "name": "documentation", - "color": "6ee5cb", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 6, - "created_at": "2018-03-04T21:03:09Z", - "updated_at": "2022-09-30T15:03:33Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "The documentation of this library is **extremely lacking**. There are no examples for even the simplest case of OAuth-based authentication for a GitHub app. The javadoc is basically non-existent. I can't figure out for example how can I use a `client_id` and `client_secret` for authentication.\r\n\r\nPlease improve this!", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/423/reactions", - "total_count": 7, - "+1": 7, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/423/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1532", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1532/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1532/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1532/events", - "html_url": "https://github.com/hub4j/github-api/issues/1532", - "id": 1389612266, - "node_id": "I_kwDOAAlq-s5S08zq", - "number": 1532, - "title": "GHMyself fails with Github enterprise", - "user": { - "login": "familrodrigues", - "id": 96345373, - "node_id": "U_kgDOBb4dHQ", - "avatar_url": "https://avatars.githubusercontent.com/u/96345373?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/familrodrigues", - "html_url": "https://github.com/familrodrigues", - "followers_url": "https://api.github.com/users/familrodrigues/followers", - "following_url": "https://api.github.com/users/familrodrigues/following{/other_user}", - "gists_url": "https://api.github.com/users/familrodrigues/gists{/gist_id}", - "starred_url": "https://api.github.com/users/familrodrigues/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/familrodrigues/subscriptions", - "organizations_url": "https://api.github.com/users/familrodrigues/orgs", - "repos_url": "https://api.github.com/users/familrodrigues/repos", - "events_url": "https://api.github.com/users/familrodrigues/events{/privacy}", - "received_events_url": "https://api.github.com/users/familrodrigues/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1686292366, - "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", - "name": "more information needed", - "color": "9ce1ed", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2022-09-28T16:05:35Z", - "updated_at": "2022-09-29T07:53:26Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Trying to connect to Github enterprise with User name & PAT token. GHMyself throws a 401 unauthorized error\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\n\r\n```\nGitHub github = GitHub.connectToEnterpriseWithOAuth(gitURL, aUsername, aPassword);\r\nGHMyself aUser = github.getMyself();\r\n```\n\r\nIssue seems to be in GHMyself u = retrieve().to(\"/user\", GHMyself.class);\n Expects the token as part of this API call\r\n\r\n\r\n**Expected behavior**\r\nWould need GHmyself to be successfully populated.\r\n\r\n**Additional context**\r\nConnect to Git hub enterprise with PAT token. The same code works fine with Github, ", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1532/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1532/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1507", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1507/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1507/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1507/events", - "html_url": "https://github.com/hub4j/github-api/issues/1507", - "id": 1350549876, - "node_id": "I_kwDOAAlq-s5Qf8F0", - "number": 1507, - "title": "PagedSearchIterable returns a subset of the searched results and has non-deterministic behaviour.", - "user": { - "login": "tassiluca", - "id": 39587905, - "node_id": "MDQ6VXNlcjM5NTg3OTA1", - "avatar_url": "https://avatars.githubusercontent.com/u/39587905?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/tassiluca", - "html_url": "https://github.com/tassiluca", - "followers_url": "https://api.github.com/users/tassiluca/followers", - "following_url": "https://api.github.com/users/tassiluca/following{/other_user}", - "gists_url": "https://api.github.com/users/tassiluca/gists{/gist_id}", - "starred_url": "https://api.github.com/users/tassiluca/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/tassiluca/subscriptions", - "organizations_url": "https://api.github.com/users/tassiluca/orgs", - "repos_url": "https://api.github.com/users/tassiluca/repos", - "events_url": "https://api.github.com/users/tassiluca/events{/privacy}", - "received_events_url": "https://api.github.com/users/tassiluca/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1686292366, - "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", - "name": "more information needed", - "color": "9ce1ed", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 3, - "created_at": "2022-08-25T08:44:37Z", - "updated_at": "2022-09-02T06:14:57Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nSearching for repositories and getting the results via the `PagedSearchIterable` returns a subset of the results with duplicate `GHRepository` objects and has non-deterministic behavior.\r\n\r\n**To Reproduce**\r\nThe problem is reproducible with the following JUnit tests. \r\n```Java\r\nmatchingRepos = github.searchRepositories()\r\n .user(\"DanySK\")\r\n .fork(GHFork.PARENT_AND_FORKS)\r\n .q(\"Student-Project-OOP\")\r\n .list();\r\n``` \r\n```Java\r\n@Test\r\npublic void testDuplicates() throws IOException {\r\n assertEquals(matchingRepos.toList().size(), matchingRepos.toSet().size());\r\n}\r\n\r\n@Test\r\npublic void testDeterminism() throws IOException {\r\n var set1 = matchingRepos.toSet();\r\n var set2 = matchingRepos.toSet();\r\n assertEquals(set1, set2);\r\n}\r\n```\r\n\r\n**Expected behavior**\r\nThe list of `GHRepository` returned by `PagedSearchIterable` should contains all the expected results.\r\n\r\n**Desktop:**\r\n - OS: [MacOS]\r\n - Browser [firefox]\r\n - Version [1.308]\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1507/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1507/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1497", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1497/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1497/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1497/events", - "html_url": "https://github.com/hub4j/github-api/issues/1497", - "id": 1325595081, - "node_id": "I_kwDOAAlq-s5PAvnJ", - "number": 1497, - "title": "GHUser even when event comes from Organization type", - "user": { - "login": "Jalmeida1994", - "id": 26606265, - "node_id": "MDQ6VXNlcjI2NjA2MjY1", - "avatar_url": "https://avatars.githubusercontent.com/u/26606265?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Jalmeida1994", - "html_url": "https://github.com/Jalmeida1994", - "followers_url": "https://api.github.com/users/Jalmeida1994/followers", - "following_url": "https://api.github.com/users/Jalmeida1994/following{/other_user}", - "gists_url": "https://api.github.com/users/Jalmeida1994/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Jalmeida1994/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Jalmeida1994/subscriptions", - "organizations_url": "https://api.github.com/users/Jalmeida1994/orgs", - "repos_url": "https://api.github.com/users/Jalmeida1994/repos", - "events_url": "https://api.github.com/users/Jalmeida1994/events{/privacy}", - "received_events_url": "https://api.github.com/users/Jalmeida1994/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 3, - "created_at": "2022-08-02T09:48:15Z", - "updated_at": "2022-08-16T08:02:26Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nA `GHUser` type is returned even when in the payload the account type is `Organization`.\r\n\r\nMore precisely in the event `installation.created` when the `installation.account.type` is set to `Organization` (app installed in organization) the `installation.account` in the `@Installation.Created` payload returns a `GHUser`.\r\n\r\n```yaml\r\n{\r\n \"action\": \"created\",\r\n \"installation\": {\r\n \"id\": 12345,\r\n \"account\": {\r\n \"login\": \"org-name\",\r\n <...>\r\n \"type\": \"Organization\",\r\n \"site_admin\": false\r\n },\r\n<...>\r\n```\r\n\r\n```kotlin\r\nfun onInstall(@Installation.Created installationPayload: GHEventPayload.Installation) {\r\n val tenantGHOrganization = installationPayload.installation.account // <-- GHUser instance\r\n}\r\n```\r\n\r\nAlso tried to use the `installationPayload.organization` object but it always returned null (probably it's used in other events):\r\n\r\n```kotlin\r\nfun onInstall(@Installation.Created installationPayload: GHEventPayload.Installation) {\r\n LOG.info(\"org: \" + installationPayload.organization.name) // <-- Cannot invoke \"org.kohsuke.github.GHOrganization.getName()\" because the return value of \"org.kohsuke.github.GHEventPayload$Installation.getOrganization()\" is null\r\n}\r\n```\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Create an event with `installation.created` in an organization (install app in an organization)\r\n2. Catch the event\r\n3. Retrieve the `installationPayload.installation.account` object\r\n4. Or retrieve the `installationPayload.organization` object\r\n\r\n**Expected behavior**\r\nIf the payload has the `installation.account.type` set to `Organization` the `installationPayload.installation.account`should return a GHOrganization object or the `installationPayload.organization` should not return null.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: macOS Monterey v12.4 (Apple M1)\r\n\r\n**Additional context**\r\nUsing Kotlin and [Quarkus GitHub App](https://github.com/quarkiverse/quarkus-github-app)\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1497/reactions", - "total_count": 2, - "+1": 2, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1497/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1468", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1468/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1468/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1468/events", - "html_url": "https://github.com/hub4j/github-api/issues/1468", - "id": 1257088797, - "node_id": "I_kwDOAAlq-s5K7acd", - "number": 1468, - "title": "Adding support for rerequesting check-suites/check runs", - "user": { - "login": "xocasdashdash", - "id": 6722159, - "node_id": "MDQ6VXNlcjY3MjIxNTk=", - "avatar_url": "https://avatars.githubusercontent.com/u/6722159?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/xocasdashdash", - "html_url": "https://github.com/xocasdashdash", - "followers_url": "https://api.github.com/users/xocasdashdash/followers", - "following_url": "https://api.github.com/users/xocasdashdash/following{/other_user}", - "gists_url": "https://api.github.com/users/xocasdashdash/gists{/gist_id}", - "starred_url": "https://api.github.com/users/xocasdashdash/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/xocasdashdash/subscriptions", - "organizations_url": "https://api.github.com/users/xocasdashdash/orgs", - "repos_url": "https://api.github.com/users/xocasdashdash/repos", - "events_url": "https://api.github.com/users/xocasdashdash/events{/privacy}", - "received_events_url": "https://api.github.com/users/xocasdashdash/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2022-06-01T21:31:58Z", - "updated_at": "2022-08-08T16:41:52Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "So for a project i want to be able to rerun a checksuite that another app already configured (something like travis/jenkins app). \r\n\r\nI see that github's API supports this: \r\n\r\n- https://docs.github.com/en/rest/checks/runs#rerequest-a-check-run\r\n- https://docs.github.com/en/rest/checks/suites#rerequest-a-check-suite\r\n\r\nBut i haven't been able to find how to do that with this library. Is this supported? I'd love to add these two calls (seems like it should be a couple of POST requests) but I might struggle with testing. Is there any example of adding support for something like this? \r\n\r\nLet me know if I missed something and this is actually possible with this library, I've checked on the GHCheckSuite and GHCheckRun classes", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1468/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1468/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1471", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1471/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1471/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1471/events", - "html_url": "https://github.com/hub4j/github-api/issues/1471", - "id": 1270012702, - "node_id": "I_kwDOAAlq-s5Lstse", - "number": 1471, - "title": "Could not fetch branches from source ", - "user": { - "login": "noellowry", - "id": 19227294, - "node_id": "MDQ6VXNlcjE5MjI3Mjk0", - "avatar_url": "https://avatars.githubusercontent.com/u/19227294?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/noellowry", - "html_url": "https://github.com/noellowry", - "followers_url": "https://api.github.com/users/noellowry/followers", - "following_url": "https://api.github.com/users/noellowry/following{/other_user}", - "gists_url": "https://api.github.com/users/noellowry/gists{/gist_id}", - "starred_url": "https://api.github.com/users/noellowry/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/noellowry/subscriptions", - "organizations_url": "https://api.github.com/users/noellowry/orgs", - "repos_url": "https://api.github.com/users/noellowry/repos", - "events_url": "https://api.github.com/users/noellowry/events{/privacy}", - "received_events_url": "https://api.github.com/users/noellowry/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1686290078, - "node_id": "MDU6TGFiZWwxNjg2MjkwMDc4", - "url": "https://api.github.com/repos/hub4j/github-api/labels/external", - "name": "external", - "color": "a0a0a0", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2022-06-13T22:10:34Z", - "updated_at": "2022-06-22T02:52:51Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nScan Repository Now fails branch\r\n```\r\nChecking branch [release/v1.9.0.0](repo-name/branch-name)\r\n ‘jenkins/Jenkinsfile.selenium’ found\r\n Met criteria\r\nERROR: [Mon Jun 13 22:05:43 UTC 2022] Could not fetch branches from source a4e4fa47-7b9a-49de-a5b8-56e68cfb2e08\r\n[Mon Jun 13 22:05:43 UTC 2022] Finished branch indexing. Indexing took 1 min 17 sec\r\nFATAL: Failed to recompute children of resilient-selenium\r\njava.lang.IllegalStateException: JENKINS-42511: attempted to redundantly create release%2Fv1.9.0.0 in org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject@17a57a09[resilient-selenium]\r\n\tat jenkins.branch.MultiBranchProject$SCMHeadObserverImpl.observeNew(MultiBranchProject.java:2055)\r\n\tat jenkins.branch.MultiBranchProject$SCMHeadObserverImpl.observe(MultiBranchProject.java:1990)\r\n\tat jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:357)\r\n\tat jenkins.scm.api.trait.SCMSourceRequest.process(SCMSourceRequest.java:249)\r\n\tat org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:1055)\r\n\tat jenkins.scm.api.SCMSource._retrieve(SCMSource.java:373)\r\n\tat jenkins.scm.api.SCMSource.fetch(SCMSource.java:283)\r\n\tat jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:641)\r\n\tat com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:278)\r\n\tat com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:166)\r\n\tat jenkins.branch.MultiBranchProject$BranchIndexing.run(MultiBranchProject.java:1032)\r\n\tat hudson.model.ResourceController.execute(ResourceController.java:101)\r\n\tat hudson.model.Executor.run(Executor.java:442)\r\nFinished: FAILURE\r\n```\r\nDeleted the cache in `$JENKINS_HOME/org.jenkinsci.plugins.github_branch_source.GitHubSCMProbe.cache/*`\r\nbut the issue still persists\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n\r\n1. Click on 'Scan Repository Now'\r\n2. Go to 'Scan Repository Log'\r\n3. See error\r\n\r\n**Expected behavior**\r\nRepository to be scanned successfully\r\nNot sure if the %2F in branch name is causing issues? Though it worked for a similarly named branch\r\nBranch name is release/v1.9.0.0\r\n`java.lang.IllegalStateException: JENKINS-42511: attempted to redundantly create release%2Fv1.9.0.0 in org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject@17a57a09[resilient-selenium]`", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1471/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1471/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/937", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/937/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/937/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/937/events", - "html_url": "https://github.com/hub4j/github-api/issues/937", - "id": 686155949, - "node_id": "MDU6SXNzdWU2ODYxNTU5NDk=", - "number": 937, - "title": "Adding public key to user", - "user": { - "login": "vmax", - "id": 499267, - "node_id": "MDQ6VXNlcjQ5OTI2Nw==", - "avatar_url": "https://avatars.githubusercontent.com/u/499267?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/vmax", - "html_url": "https://github.com/vmax", - "followers_url": "https://api.github.com/users/vmax/followers", - "following_url": "https://api.github.com/users/vmax/following{/other_user}", - "gists_url": "https://api.github.com/users/vmax/gists{/gist_id}", - "starred_url": "https://api.github.com/users/vmax/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/vmax/subscriptions", - "organizations_url": "https://api.github.com/users/vmax/orgs", - "repos_url": "https://api.github.com/users/vmax/repos", - "events_url": "https://api.github.com/users/vmax/events{/privacy}", - "received_events_url": "https://api.github.com/users/vmax/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 6, - "created_at": "2020-08-26T09:15:37Z", - "updated_at": "2022-06-02T10:45:59Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\n\r\nIt currently seems to be impossible to add a new public key to user's account using `GHMyself`. [`POST /user/keys`](https://developer.github.com/v3/users/keys/#create-a-public-ssh-key-for-the-authenticated-user) is the relevant GitHub API endpoint.\r\n\r\n**To Reproduce**\r\nRead docs on `GHMyself` and observe the method not being present\r\n\r\n**Expected behavior**\r\n`GHMyself::addKey` to be available, with an interface similar to `GHRepository::addDeployKey`\r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/937/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/937/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1267", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1267/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1267/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1267/events", - "html_url": "https://github.com/hub4j/github-api/issues/1267", - "id": 1031601401, - "node_id": "I_kwDOAAlq-s49fPz5", - "number": 1267, - "title": "GHFileNotFoundException is thrown for any HTTP 4xx or 5xx error", - "user": { - "login": "Typraeurion", - "id": 36168707, - "node_id": "MDQ6VXNlcjM2MTY4NzA3", - "avatar_url": "https://avatars.githubusercontent.com/u/36168707?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Typraeurion", - "html_url": "https://github.com/Typraeurion", - "followers_url": "https://api.github.com/users/Typraeurion/followers", - "following_url": "https://api.github.com/users/Typraeurion/following{/other_user}", - "gists_url": "https://api.github.com/users/Typraeurion/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Typraeurion/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Typraeurion/subscriptions", - "organizations_url": "https://api.github.com/users/Typraeurion/orgs", - "repos_url": "https://api.github.com/users/Typraeurion/repos", - "events_url": "https://api.github.com/users/Typraeurion/events{/privacy}", - "received_events_url": "https://api.github.com/users/Typraeurion/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 3, - "created_at": "2021-10-20T16:23:20Z", - "updated_at": "2022-05-24T20:00:57Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nObsoleteUrlFactory.getInputStream() throws FileNotFoundException regardless of the type of client-side or server-side error response from an HTTP request. GitHubClient.interpretApiError(IOException, GitHubRequest, ResponseInfo) then _assumes_ this exception is due to a 404 response and wraps that exception in a GHFileNotFoundException. This makes in impossible for the caller to distinguish what kind of error we’re dealing with. In the particular case I’m troubleshooting right now, it’s an expired auth token which _should_ cause the application to delete its session cookie and redirect the user to the auth flow; instead it’s showing the user a 500 Internal Server Error because it doesn’t know how to handle this exception.\r\n\r\nThe getInputStream code is:\r\n```\r\n Response response = getResponse(false);\r\n if (response.code() >= HTTP_BAD_REQUEST)\r\n throw new FileNotFoundException(url.toString());\r\n return new ResponseBodyInputStream(response.body());\r\n```\r\nThe offending code in interpretApiError is:\r\n```\r\n if (errorMessage != null) {\r\n if (e instanceof FileNotFoundException) { // MISTAKEN ASSUMPTION HERE!\r\n // pass through 404 Not Found to allow the caller to handle it intelligently\r\n e = new GHFileNotFoundException(e.getMessage() + \" \" + errorMessage, e)\r\n .withResponseHeaderFields(headers);\r\n } else if (statusCode >= 0) {\r\n e = new HttpException(errorMessage, statusCode, message, request.url().toString(), e);\r\n } else {\r\n e = new GHIOException(errorMessage).withResponseHeaderFields(headers);\r\n }\r\n } else if (!(e instanceof FileNotFoundException)) {\r\n e = new HttpException(statusCode, message, request.url().toString(), e);\r\n }\r\n return e;\r\n```\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Set `authToken` to an old authentication token (e.g. one obtained yesterday)\r\n2.\r\n```\r\n GitHub connection = new GitHubBuilder()\r\n .withConnector(new OkHttpConnector(new OkHttpClient.Builder().build()))\r\n .withOAuthToken(authToken)\r\n .build();\r\n GHMyself me = connection.getMyself();\r\n```\r\n\r\n**Expected behavior**\r\nThe call should throw GHFileNotFoundException only `if (statusCode == 404)`; it should throw HttpException `if (statusCode >= 400)` and throw GHIOException in any other case. _(Status codes 2xx or 3xx should not be throwing exceptions.)_\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: MacOS 11.4\r\n - Browser: Chrome 94.0.4606.81\r\n - Version: 1.133\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1267/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1267/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1232", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1232/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1232/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1232/events", - "html_url": "https://github.com/hub4j/github-api/issues/1232", - "id": 1002874718, - "node_id": "I_kwDOAAlq-s47xqde", - "number": 1232, - "title": "open your objects for extension", - "user": { - "login": "tynutsu", - "id": 5890846, - "node_id": "MDQ6VXNlcjU4OTA4NDY=", - "avatar_url": "https://avatars.githubusercontent.com/u/5890846?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/tynutsu", - "html_url": "https://github.com/tynutsu", - "followers_url": "https://api.github.com/users/tynutsu/followers", - "following_url": "https://api.github.com/users/tynutsu/following{/other_user}", - "gists_url": "https://api.github.com/users/tynutsu/gists{/gist_id}", - "starred_url": "https://api.github.com/users/tynutsu/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/tynutsu/subscriptions", - "organizations_url": "https://api.github.com/users/tynutsu/orgs", - "repos_url": "https://api.github.com/users/tynutsu/repos", - "events_url": "https://api.github.com/users/tynutsu/events{/privacy}", - "received_events_url": "https://api.github.com/users/tynutsu/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - }, - { - "id": 1780165359, - "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", - "name": "breaking change", - "color": "b60205", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 7, - "created_at": "2021-09-21T17:00:52Z", - "updated_at": "2022-05-24T19:35:09Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "this is a very weird model which has business logic coupled with pojo, setters should not actually perform the github rest calls, instead a dedicated service should do that.\r\n\r\nwhile i understand is a lot work to re-model, what you could do at least is to allow the classes in the library to be further extended, so they should not be sealed or marked as final.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1232/reactions", - "total_count": 2, - "+1": 2, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1232/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1404", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1404/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1404/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1404/events", - "html_url": "https://github.com/hub4j/github-api/issues/1404", - "id": 1169422956, - "node_id": "I_kwDOAAlq-s5Fs_ps", - "number": 1404, - "title": "GitHub App Webhook Deliveries support", - "user": { - "login": "Georgeforman3", - "id": 100565446, - "node_id": "U_kgDOBf6Bxg", - "avatar_url": "https://avatars.githubusercontent.com/u/100565446?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Georgeforman3", - "html_url": "https://github.com/Georgeforman3", - "followers_url": "https://api.github.com/users/Georgeforman3/followers", - "following_url": "https://api.github.com/users/Georgeforman3/following{/other_user}", - "gists_url": "https://api.github.com/users/Georgeforman3/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Georgeforman3/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Georgeforman3/subscriptions", - "organizations_url": "https://api.github.com/users/Georgeforman3/orgs", - "repos_url": "https://api.github.com/users/Georgeforman3/repos", - "events_url": "https://api.github.com/users/Georgeforman3/events{/privacy}", - "received_events_url": "https://api.github.com/users/Georgeforman3/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2022-03-15T09:46:38Z", - "updated_at": "2022-04-05T15:50:16Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Is there any way to list webhook deliveries for the webhook configured for a GitHub App?\r\nhttps://docs.github.com/en/enterprise-cloud@latest/rest/reference/apps#list-deliveries-for-an-app-webhook\r\n\r\nOr to redeliver a delivery?\r\nhttps://docs.github.com/en/enterprise-cloud@latest/rest/reference/apps#redeliver-a-delivery-for-an-app-webhook\r\n\r\nThanks.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1404/reactions", - "total_count": 2, - "+1": 2, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1404/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1016", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1016/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1016/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1016/events", - "html_url": "https://github.com/hub4j/github-api/issues/1016", - "id": 781715355, - "node_id": "MDU6SXNzdWU3ODE3MTUzNTU=", - "number": 1016, - "title": "Add check that verifies public or protected methods do not take private or internal parameters", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2021-01-07T23:36:32Z", - "updated_at": "2022-03-07T19:29:46Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "#1015 fixed an issue where a `public` annotation had a `public` constructor that had a [`package-private`](https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html) `enum` parameter. This didn't break immediately, but caused issue for mocking. If it were a more generally used method, that method would be visible but not callable. \r\n\r\nWe should add an ArchUnit tests that: \r\n* find all public methods and verifies that all parameters of those method are also public\r\n* find all protected methods and verify that all parameters of those method are also at least protected - might be harder to write this test\r\n* find all public classes and verify they extend public classes - this may or may not be strictly required, but it makes for better testing and clarity.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1016/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1016/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1356", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1356/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1356/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1356/events", - "html_url": "https://github.com/hub4j/github-api/issues/1356", - "id": 1107805161, - "node_id": "I_kwDOAAlq-s5CB8Pp", - "number": 1356, - "title": "OkHttpGitHubConnector constructor seems to override OkHttpClient variables/settings", - "user": { - "login": "willemevenwel", - "id": 13721310, - "node_id": "MDQ6VXNlcjEzNzIxMzEw", - "avatar_url": "https://avatars.githubusercontent.com/u/13721310?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/willemevenwel", - "html_url": "https://github.com/willemevenwel", - "followers_url": "https://api.github.com/users/willemevenwel/followers", - "following_url": "https://api.github.com/users/willemevenwel/following{/other_user}", - "gists_url": "https://api.github.com/users/willemevenwel/gists{/gist_id}", - "starred_url": "https://api.github.com/users/willemevenwel/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/willemevenwel/subscriptions", - "organizations_url": "https://api.github.com/users/willemevenwel/orgs", - "repos_url": "https://api.github.com/users/willemevenwel/repos", - "events_url": "https://api.github.com/users/willemevenwel/events{/privacy}", - "received_events_url": "https://api.github.com/users/willemevenwel/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1686292366, - "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", - "name": "more information needed", - "color": "9ce1ed", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2022-01-19T08:33:59Z", - "updated_at": "2022-03-07T19:24:42Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "OkHttpGitHubConnector constructor seems to override OkHttpClient variables/settings. I explain.\r\n\r\nI am developing behind a corporate proxy. So while I run my code locally, I need to have my OkHttpClient initialized/built with proxy configurations. Like this:\r\n\r\n OkHttpClient client = new OkHttpClient.Builder()\r\n .connectTimeout(15, TimeUnit.SECONDS)\r\n .writeTimeout(15, TimeUnit.SECONDS)\r\n .readTimeout(15, TimeUnit.SECONDS)\r\n .proxy(proxy)\r\n .proxyAuthenticator(proxyAuthenticator)\r\n .build();\r\n\r\nBefore you make the point, I have tested a simple GET with this OkHttpClient instance, with success:\r\n\r\n Request request = new Request.Builder()\r\n .url(\"https://api.github.com\")\r\n .build();\r\n\r\nWhen initializing my GitHub instance I do the following:\r\n\r\n GitHubBuilder builder = new GitHubBuilder().withConnector(new OkHttpGitHubConnector(client));\r\n GitHub github = builder.withAppInstallationToken(githubapitoken).build();\r\n\r\nWhere the above _client_ which is used is the one initialized with the proxy. \r\n\r\nThe assumption is that the GitHub builder will honour this _client_ when any http requests are made. \r\n\r\nHowever when looking into the OkHttpGitHubConnector constructor, it seems a **new** OkHttpClient is built by calling newBuilder(). Here is the code which I inspected:\r\n\r\n public OkHttpGitHubConnector(OkHttpClient client, int cacheMaxAge) {\r\n **Builder builder = client.newBuilder();**\r\n builder.connectionSpecs(this.TlsConnectionSpecs());\r\n this.client = builder.build();\r\n if (cacheMaxAge >= 0 && this.client != null && this.client.cache() != null) {\r\n this.maxAgeHeaderValue = (new okhttp3.CacheControl.Builder()).maxAge(cacheMaxAge, TimeUnit.SECONDS).build().toString();\r\n } else {\r\n this.maxAgeHeaderValue = null;\r\n }\r\n\r\n }\r\n\r\nMy assumption is then that .newBuilder() overrides any existing settings/properties set for this OkHttpClient.\r\n\r\nAny help would be aprpeciated.\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1356/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1356/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1375", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1375/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1375/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1375/events", - "html_url": "https://github.com/hub4j/github-api/issues/1375", - "id": 1138182131, - "node_id": "I_kwDOAAlq-s5D10fz", - "number": 1375, - "title": "Webhook payloads and Event payloads should not be represented by the same classes", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1780165359, - "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", - "name": "breaking change", - "color": "b60205", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2022-02-15T04:55:32Z", - "updated_at": "2022-02-15T04:56:52Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Webhooks and events contain similar data but often not the same data. The Push event is one example: \r\nhttps://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#push\r\nhttps://docs.github.com/en/developers/webhooks-and-events/events/github-event-types#pushevent\r\n\r\nThere's a lot of overlap, but having the two represented by the same data objects is misleading. \r\nSee #1374 for an example of the confusion this causes.\r\n\r\nWe should be returning different classes for these two. ", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1375/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1375/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1373", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1373/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1373/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1373/events", - "html_url": "https://github.com/hub4j/github-api/issues/1373", - "id": 1127032832, - "node_id": "I_kwDOAAlq-s5DLSgA", - "number": 1373, - "title": "Api support required for checking the authorization for Github OAuth token after previous api has been deprecated", - "user": { - "login": "sundergopalsingh", - "id": 8762655, - "node_id": "MDQ6VXNlcjg3NjI2NTU=", - "avatar_url": "https://avatars.githubusercontent.com/u/8762655?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/sundergopalsingh", - "html_url": "https://github.com/sundergopalsingh", - "followers_url": "https://api.github.com/users/sundergopalsingh/followers", - "following_url": "https://api.github.com/users/sundergopalsingh/following{/other_user}", - "gists_url": "https://api.github.com/users/sundergopalsingh/gists{/gist_id}", - "starred_url": "https://api.github.com/users/sundergopalsingh/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/sundergopalsingh/subscriptions", - "organizations_url": "https://api.github.com/users/sundergopalsingh/orgs", - "repos_url": "https://api.github.com/users/sundergopalsingh/repos", - "events_url": "https://api.github.com/users/sundergopalsingh/events{/privacy}", - "received_events_url": "https://api.github.com/users/sundergopalsingh/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2022-02-08T10:00:12Z", - "updated_at": "2022-02-14T22:22:46Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nGithub has deprecated previous REST api that was used to check the authorization of OAuth token as per https://docs.github.com/en/enterprise-server@3.3/rest/reference/oauth-authorizations#check-an-authorization and blog post https://developer.github.com/changes/2020-02-14-deprecating-oauth-app-endpoint/ \r\n\r\nIn this repository we are using the deprecated api :-\r\nhttps://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GitHub.java#L1106 and there is no support for the new APIs mentioned as per blog. So we would need support for new APIs to be added in order to check for a token authorization part as well as for the other areas which has been effected by the deprecation of the authorization APIs.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Create an OAuth token \r\n2. Try to validate the token using checkAuth Method https://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GitHub.java#L1105 with valid clientId and accessToken created previously.\r\n3. It returns 404\r\n\r\n**Expected behavior**\r\ncheckAuth method or any other method added should not return 404 for a valid token and should return the proper GHAuthorization object.\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1373/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1373/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1357", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1357/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1357/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1357/events", - "html_url": "https://github.com/hub4j/github-api/issues/1357", - "id": 1110166715, - "node_id": "I_kwDOAAlq-s5CK8y7", - "number": 1357, - "title": "Exception on renaming label - `done()` should only be callable once for Setter or Updater", - "user": { - "login": "danhallin", - "id": 1741571, - "node_id": "MDQ6VXNlcjE3NDE1NzE=", - "avatar_url": "https://avatars.githubusercontent.com/u/1741571?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/danhallin", - "html_url": "https://github.com/danhallin", - "followers_url": "https://api.github.com/users/danhallin/followers", - "following_url": "https://api.github.com/users/danhallin/following{/other_user}", - "gists_url": "https://api.github.com/users/danhallin/gists{/gist_id}", - "starred_url": "https://api.github.com/users/danhallin/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/danhallin/subscriptions", - "organizations_url": "https://api.github.com/users/danhallin/orgs", - "repos_url": "https://api.github.com/users/danhallin/repos", - "events_url": "https://api.github.com/users/danhallin/events{/privacy}", - "received_events_url": "https://api.github.com/users/danhallin/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2022-01-21T08:00:45Z", - "updated_at": "2022-01-29T06:40:30Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nThrowing error when renaming label, the renaming does take place.\r\n\r\norg.kohsuke.github.GHFileNotFoundException: https://api.github.com/repos/org/repo/labels/oldname {\"message\":\"Not Found\",\"documentation_url\":\"https://docs.github.com/rest/reference/issues#update-a-label\"}\r\n\tat org.kohsuke.github.GitHubClient.interpretApiError(GitHubClient.java:540)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:401)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:355)\r\n\tat org.kohsuke.github.Requester.fetch(Requester.java:76)\r\n\tat org.kohsuke.github.AbstractBuilder.done(AbstractBuilder.java:109)\r\n\tat org.kohsuke.github.GHLabel$Setter.done(GHLabel.java:258)\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n```\r\nGHLabel ghLabel = ghLabelWithOldName;\r\nGHLabel.Setter setter = ghLabel.set();\r\nsetter.name(newname);\r\nghLabel = setter.done();\r\n```\r\n\r\n**Expected behavior**\r\nNew label should be returned by .done()\r\n\r\n**Additional context**\r\nVersion 1.301\r\nLikely caused from attempting to re-fetch label data with the old name which was just replaced and is no longer available.\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1357/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1357/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1330", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1330/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1330/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1330/events", - "html_url": "https://github.com/hub4j/github-api/issues/1330", - "id": 1067671913, - "node_id": "I_kwDOAAlq-s4_o2Fp", - "number": 1330, - "title": "Query runs for a workflow", - "user": { - "login": "Typraeurion", - "id": 36168707, - "node_id": "MDQ6VXNlcjM2MTY4NzA3", - "avatar_url": "https://avatars.githubusercontent.com/u/36168707?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Typraeurion", - "html_url": "https://github.com/Typraeurion", - "followers_url": "https://api.github.com/users/Typraeurion/followers", - "following_url": "https://api.github.com/users/Typraeurion/following{/other_user}", - "gists_url": "https://api.github.com/users/Typraeurion/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Typraeurion/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Typraeurion/subscriptions", - "organizations_url": "https://api.github.com/users/Typraeurion/orgs", - "repos_url": "https://api.github.com/users/Typraeurion/repos", - "events_url": "https://api.github.com/users/Typraeurion/events{/privacy}", - "received_events_url": "https://api.github.com/users/Typraeurion/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1686292366, - "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", - "name": "more information needed", - "color": "9ce1ed", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2021-11-30T21:01:57Z", - "updated_at": "2021-12-13T22:11:42Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nThis is a follow-up to issue #1244. v1.135 added `listRuns` to GHWorkflow, but that doesn’t have support for adding any query parameters list GHRepository’s `queryWorkflowRuns` does.\r\n\r\nI checked out the source code and tried adding support for this myself, but ran into two issues:\r\n* On importing the project into Eclipse, I get a “Maven Project Build Lifecycle Mapping Problem” that I have no idea how to fix:\r\n> Plugin execution not covered by lifecycle configuration: com.infradna.tool:bridge-method-injector:1.18:process (execution: default, phase: process-classes)\r\n* I don’t know how test data is generated\r\n\r\nWith these limitations in mind, I have the following suggested changes. I’ve added an optional `workflow` field to GHWorkflowRunQueryBuilder which is set if created by GHWorkflow.queryWorkflowRuns. If this is set, the query’s `list` method uses the [list workflow runs](https://docs.github.com/en/rest/reference/actions#list-workflow-runs) endpoint instead of [list workflow runs for a repository](https://docs.github.com/en/rest/reference/actions#list-workflow-runs-for-a-repository).\r\n\r\nAlso, I added support in the query builder to set `status` to a Conclusion or an arbitrary string, since the GitHub API supports any status or conclusion values for this parameter.\r\n```\r\ndiff --git a/src/main/java/org/kohsuke/github/GHWorkflow.java b/src/main/java/org/kohsuke/github/GHWorkflow.java\r\nindex ea195e5b1..569abb582 100644\r\n--- a/src/main/java/org/kohsuke/github/GHWorkflow.java\r\n+++ b/src/main/java/org/kohsuke/github/GHWorkflow.java\r\n@@ -145,6 +145,15 @@ public class GHWorkflow extends GHObject {\r\n return new GHWorkflowRunsIterable(owner, root().createRequest().withUrlPath(getApiRoute(), \"runs\"));\r\n }\r\n \r\n+ /**\r\n+ * Retrieves workflow runs.\r\n+ *\r\n+ * @return the workflow run query builder\r\n+ */\r\n+ public GHWorkflowRunQueryBuilder queryWorkflowRuns() {\r\n+ return new GHWorkflowRunQueryBuilder(this);\r\n+ }\r\n+\r\n private String getApiRoute() {\r\n if (owner == null) {\r\n // Workflow runs returned from search to do not have an owner. Attempt to use url.\r\ndiff --git a/src/main/java/org/kohsuke/github/GHWorkflowRunQueryBuilder.java b/src/main/java/org/kohsuke/github/GHWorkflowRunQueryBuilder.ja\r\nva\r\nindex 57a482d1b..0093ccb33 100644\r\n--- a/src/main/java/org/kohsuke/github/GHWorkflowRunQueryBuilder.java\r\n+++ b/src/main/java/org/kohsuke/github/GHWorkflowRunQueryBuilder.java\r\n@@ -1,5 +1,6 @@\r\n package org.kohsuke.github;\r\n \r\n+import org.kohsuke.github.GHWorkflowRun.Conclusion;\r\n import org.kohsuke.github.GHWorkflowRun.Status;\r\n \r\n /**\r\n@@ -10,10 +11,18 @@ import org.kohsuke.github.GHWorkflowRun.Status;\r\n */\r\n public class GHWorkflowRunQueryBuilder extends GHQueryBuilder {\r\n private final GHRepository repo;\r\n+ private final GHWorkflow workflow;\r\n \r\n GHWorkflowRunQueryBuilder(GHRepository repo) {\r\n super(repo.root());\r\n this.repo = repo;\r\n+ workflow = null;\r\n+ }\r\n+\r\n+ GHWorkflowRunQueryBuilder(GHWorkflow workflow) {\r\n+ super(workflow.getRepository().root());\r\n+ this.repo = workflow.getRepository();\r\n+ this.workflow = workflow;\r\n }\r\n \r\n /**\r\n@@ -88,8 +97,36 @@ public class GHWorkflowRunQueryBuilder extends GHQueryBuilder {\r\n return this;\r\n }\r\n \r\n+ /**\r\n+ * Status workflow run query builder.\r\n+ *\r\n+ * @param conclusion\r\n+ * the conclusion\r\n+ * @return the gh workflow run query builder\r\n+ */\r\n+ public GHWorkflowRunQueryBuilder status(Conclusion conclusion) {\r\n+ req.with(\"status\", conclusion.toString());\r\n+ return this;\r\n+ }\r\n+\r\n+ /**\r\n+ * Status workflow run query builder.\r\n+ *\r\n+ * @param status\r\n+ * the status\r\n+ * @return the gh workflow run query builder\r\n+ */\r\n+ public GHWorkflowRunQueryBuilder status(String status) {\r\n+ req.with(\"status\", status);\r\n+ return this;\r\n+ }\r\n+\r\n @Override\r\n public PagedIterable list() {\r\n- return new GHWorkflowRunsIterable(repo, req.withUrlPath(repo.getApiTailUrl(\"actions/runs\")));\r\n+ if (workflow == null)\r\n+ return new GHWorkflowRunsIterable(repo, req.withUrlPath(repo.getApiTailUrl(\"actions/runs\")));\r\n+ else\r\n+ return new GHWorkflowRunsIterable(repo, req.withUrlPath(\r\n+ repo.getApiTailUrl(String.format(\"actions/workflows/%d/runs\", workflow.getId()))));\r\n }\r\n }\r\ndiff --git a/src/test/java/org/kohsuke/github/GHWorkflowTest.java b/src/test/java/org/kohsuke/github/GHWorkflowTest.java\r\nindex a91f9f4ca..86e653787 100644\r\n--- a/src/test/java/org/kohsuke/github/GHWorkflowTest.java\r\n+++ b/src/test/java/org/kohsuke/github/GHWorkflowTest.java\r\n@@ -121,6 +121,17 @@ public class GHWorkflowTest extends AbstractGitHubWireMockTest {\r\n checkWorkflowRunProperties(workflowRuns.get(1), workflow.getId());\r\n }\r\n \r\n+ //Test\r\n+ public void testQueryWorkflowRuns() throws IOException {\r\n+ GHWorkflow workflow = repo.getWorkflow(\"test-workflow.yml\");\r\n+\r\n+ List workflowRuns = workflow.queryWorkflowRuns()\r\n+ .list().toList();\r\n+ assertThat(workflowRuns.size(), is(1));\r\n+\r\n+ checkWorkflowRunProperties(workflowRuns.get(0), workflow.getId());\r\n+ }\r\n+\r\n private static void checkWorkflowRunProperties(GHWorkflowRun workflowRun, long workflowId) throws IOException {\r\n assertThat(workflowRun.getWorkflowId(), equalTo(workflowId));\r\n assertThat(workflowRun.getId(), notNullValue());\r\n```\r\n\r\nI was able to build the library and test this change in my application, and it appears to work as expected. These are the changes I made in my application to test it: the original code was using both GHWorkflow.listRuns and GHRepository.queryWorkflowRuns, and had to filter the results; now both parts of the code use GHWorkflow.queryWorkflowRuns with minimal or no filtering.\r\n```\r\n@@ -1199,21 +1240,15 @@ public class GitHubRestAPIClient {\r\n String.format(\"%s/%s\", organization, repository));\r\n GHWorkflow wf = repo.getWorkflow(workflowId);\r\n \r\n- // FIXME: GHWorkflow doesn't support query parameters for listing runs\r\n- // See: https://github.com/hub4j/github-api/issues/1244\r\n- PagedIterable workflowRuns = wf.listRuns();\r\n- // repo.queryWorkflowRuns().branch(branch).list();\r\n+ GHWorkflowRunQueryBuilder query = wf.queryWorkflowRuns();\r\n+ if (StringUtils.isNotBlank(branch))\r\n+ query = query.branch(branch);\r\n+ PagedIterable workflowRuns = query.list();\r\n \r\n- // Until we can select a single branch, we need a large enough\r\n- // page size to have a good chance of seeing the desired workflow.\r\n- PagedIterator iter = workflowRuns/* .withPageSize(1) */.iterator();\r\n+ PagedIterator iter = workflowRuns.withPageSize(1).iterator();\r\n while (iter.hasNext()) {\r\n \r\n GHWorkflowRun run = iter.next();\r\n- if (StringUtils.isNotBlank(branch)) {\r\n- if (!run.getHeadBranch().equals(branch))\r\n- continue;\r\n- }\r\n \r\n // HDBE-1868: If this run was skipped, ignore it.\r\n if (run.getConclusion() == GHWorkflowRun.Conclusion.SKIPPED)\r\n@@ -1285,22 +1320,16 @@ public class GitHubRestAPIClient {\r\n String.format(\"%s/%s\", organization, repository));\r\n GHWorkflow wf = repo.getWorkflow(workflowId);\r\n \r\n- PagedIterable workflowRuns =\r\n- repo.queryWorkflowRuns()\r\n- .branch(Optional.ofNullable(branch).orElse(repo.getDefaultBranch()))\r\n- .list();\r\n+ GHWorkflowRunQueryBuilder query = wf.queryWorkflowRuns();\r\n+ if (StringUtils.isNotBlank(branch))\r\n+ query = query.branch(branch);\r\n+ PagedIterable workflowRuns = query.list();\r\n \r\n PagedIterator iter = workflowRuns.iterator();\r\n while (iter.hasNext()) {\r\n \r\n GHWorkflowRun run = iter.next();\r\n- if (run.getWorkflowId() != wf.getId())\r\n- continue;\r\n-\r\n- if ((run.getStatus() != GHWorkflowRun.Status.COMPLETED) ||\r\n- (run.getConclusion() != GHWorkflowRun.Conclusion.SUCCESS))\r\n- continue;\r\n-\r\n return new WorkflowRun(run, findTargetCommit(run, commitArtifact));\r\n \r\n }\r\n```\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1330/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1330/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1024", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1024/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1024/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1024/events", - "html_url": "https://github.com/hub4j/github-api/issues/1024", - "id": 789898861, - "node_id": "MDU6SXNzdWU3ODk4OTg4NjE=", - "number": 1024, - "title": "GHProjectCard return null on getContent()", - "user": { - "login": "WolverMinion", - "id": 23451407, - "node_id": "MDQ6VXNlcjIzNDUxNDA3", - "avatar_url": "https://avatars.githubusercontent.com/u/23451407?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/WolverMinion", - "html_url": "https://github.com/WolverMinion", - "followers_url": "https://api.github.com/users/WolverMinion/followers", - "following_url": "https://api.github.com/users/WolverMinion/following{/other_user}", - "gists_url": "https://api.github.com/users/WolverMinion/gists{/gist_id}", - "starred_url": "https://api.github.com/users/WolverMinion/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/WolverMinion/subscriptions", - "organizations_url": "https://api.github.com/users/WolverMinion/orgs", - "repos_url": "https://api.github.com/users/WolverMinion/repos", - "events_url": "https://api.github.com/users/WolverMinion/events{/privacy}", - "received_events_url": "https://api.github.com/users/WolverMinion/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": { - "login": "km2018", - "id": 13594336, - "node_id": "MDQ6VXNlcjEzNTk0MzM2", - "avatar_url": "https://avatars.githubusercontent.com/u/13594336?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/km2018", - "html_url": "https://github.com/km2018", - "followers_url": "https://api.github.com/users/km2018/followers", - "following_url": "https://api.github.com/users/km2018/following{/other_user}", - "gists_url": "https://api.github.com/users/km2018/gists{/gist_id}", - "starred_url": "https://api.github.com/users/km2018/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/km2018/subscriptions", - "organizations_url": "https://api.github.com/users/km2018/orgs", - "repos_url": "https://api.github.com/users/km2018/repos", - "events_url": "https://api.github.com/users/km2018/events{/privacy}", - "received_events_url": "https://api.github.com/users/km2018/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "assignees": [ - { - "login": "km2018", - "id": 13594336, - "node_id": "MDQ6VXNlcjEzNTk0MzM2", - "avatar_url": "https://avatars.githubusercontent.com/u/13594336?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/km2018", - "html_url": "https://github.com/km2018", - "followers_url": "https://api.github.com/users/km2018/followers", - "following_url": "https://api.github.com/users/km2018/following{/other_user}", - "gists_url": "https://api.github.com/users/km2018/gists{/gist_id}", - "starred_url": "https://api.github.com/users/km2018/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/km2018/subscriptions", - "organizations_url": "https://api.github.com/users/km2018/orgs", - "repos_url": "https://api.github.com/users/km2018/repos", - "events_url": "https://api.github.com/users/km2018/events{/privacy}", - "received_events_url": "https://api.github.com/users/km2018/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - } - ], - "milestone": null, - "comments": 15, - "created_at": "2021-01-20T11:35:09Z", - "updated_at": "2021-12-09T15:10:44Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nI need a issue list from a project column. The implementation is in a jenkins shared library.\r\nIt's easy to use. Unfortunately I get an error.\r\nSee this Code. github-api is included as a dependency with version 1.122\r\n\r\n**To Reproduce**\r\n\r\n```groovy\r\nimport ....\r\nfinal GitHub github = GitHub.connectToEnterpriseWithOAuth('https://github.enterprise.com/api/v3', null, 'usertoken123')\r\nfinal GHProjectColumn projectColumn = github.getProjectColumn(12345)\r\nprojectColumn.listCards().each { projectCard ->\r\n echo \"\"\"\r\nProjectCard: ${projectCard}\r\nContentUrl: ${projectCard.getContentUrl()}\r\nContent: ${projectCard.getContent()}\r\n\"\"\"\r\n GHIssue issue = projectCard.getContent()\r\n // issue must not be null\r\n}\r\n```\r\nhttps://github.com/hub4j/github-api/blob/8e6dbf37724cd76096b339ea7399fd49d06b49cb/src/main/java/org/kohsuke/github/GHProjectCard.java#L120\r\n\r\n**Expected behavior**\r\n`projectCard.getContent()` return the existing issue object or a helpful error message.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: unimportant\r\n - Browser unimportant\r\n - Version 1.122\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1024/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1024/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1292", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1292/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1292/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1292/events", - "html_url": "https://github.com/hub4j/github-api/issues/1292", - "id": 1049950516, - "node_id": "I_kwDOAAlq-s4-lPk0", - "number": 1292, - "title": "Can't find API for managing Secrets", - "user": { - "login": "yolch-yolchyan", - "id": 6720157, - "node_id": "MDQ6VXNlcjY3MjAxNTc=", - "avatar_url": "https://avatars.githubusercontent.com/u/6720157?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/yolch-yolchyan", - "html_url": "https://github.com/yolch-yolchyan", - "followers_url": "https://api.github.com/users/yolch-yolchyan/followers", - "following_url": "https://api.github.com/users/yolch-yolchyan/following{/other_user}", - "gists_url": "https://api.github.com/users/yolch-yolchyan/gists{/gist_id}", - "starred_url": "https://api.github.com/users/yolch-yolchyan/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/yolch-yolchyan/subscriptions", - "organizations_url": "https://api.github.com/users/yolch-yolchyan/orgs", - "repos_url": "https://api.github.com/users/yolch-yolchyan/repos", - "events_url": "https://api.github.com/users/yolch-yolchyan/events{/privacy}", - "received_events_url": "https://api.github.com/users/yolch-yolchyan/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 3, - "created_at": "2021-11-10T15:14:31Z", - "updated_at": "2021-12-07T09:20:31Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "I was wondering if there is an API to manage GitHub repo secrets?\r\n`/repos/{owner}/{repo}/actions/secrets/{secret_name}`\r\n\r\nIf we have developed one, could you please point me out how to use it?", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1292/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1292/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1325", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1325/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1325/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1325/events", - "html_url": "https://github.com/hub4j/github-api/issues/1325", - "id": 1063300922, - "node_id": "I_kwDOAAlq-s4_YK86", - "number": 1325, - "title": "Accessing Gists via getMyself().listGists() returns null data for Gist files", - "user": { - "login": "EasyG0ing1", - "id": 10106834, - "node_id": "MDQ6VXNlcjEwMTA2ODM0", - "avatar_url": "https://avatars.githubusercontent.com/u/10106834?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/EasyG0ing1", - "html_url": "https://github.com/EasyG0ing1", - "followers_url": "https://api.github.com/users/EasyG0ing1/followers", - "following_url": "https://api.github.com/users/EasyG0ing1/following{/other_user}", - "gists_url": "https://api.github.com/users/EasyG0ing1/gists{/gist_id}", - "starred_url": "https://api.github.com/users/EasyG0ing1/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/EasyG0ing1/subscriptions", - "organizations_url": "https://api.github.com/users/EasyG0ing1/orgs", - "repos_url": "https://api.github.com/users/EasyG0ing1/repos", - "events_url": "https://api.github.com/users/EasyG0ing1/events{/privacy}", - "received_events_url": "https://api.github.com/users/EasyG0ing1/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2021-11-25T08:41:01Z", - "updated_at": "2021-12-07T09:19:17Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Once I authenticate to GitHub with a valid access token, but then attempt to pull the Map of Gists using this method:\r\n\r\n`gitHub.getMyself().listGists();`\r\n\r\nIt will give me a map of GHGist objects and their gistId's, but when I then use the GHGist object to pull the files out of Gist, the file data comes back null.\r\n\r\nEdit:\r\nHere is some test code with the output if it helps:\r\n\r\n```\r\nSystem.out.println(\"GistID's from GHGist objects:\");\r\n\tfor (GHGist ghGist : gitHub.getMyself().listGists().toList()) {\r\n\t\tSystem.out.println(\"\\t\"+ghGist.getGistId());\r\n\t}\r\n\r\nSystem.out.println(\"\\nFrom the same GHGist objects, here is the data that their GHGistFile objects contain:\\n\\nFilename: Content\");\r\n\tfor (GHGist ghGist : gitHub.getMyself().listGists().toList()) {\r\n\t\tfor(GHGistFile ghGistFile : ghGist.getFiles().values()) {\r\n\t\t\tSystem.out.print(\"\\t\"+ghGistFile.getFileName()+\": \");\r\n\t\t\tSystem.out.println(ghGistFile.getContent());\r\n\t\t}\r\n\t}\r\n```\r\n\r\nOutput:\r\n\r\n```\r\nGistID's from GHGist objects:\r\n\t9dc8a008611a40e94099b1c0b6863733\r\n\t342f5623cf3df3661f46ebf4ca2a2675\r\n\tc2f0e3c0e5db2d9ad4bcf330e07927fb\r\n\tb8f9336f40e578c3592050a239bfdeb4\r\n\tda95ba9977e6b41bbe4dd66091f90212\r\n\tee3699324888a1217615584e77e900ad\r\n\t420cdb2f098acfbfa1d16846851e9de4\r\n\t7902bc4639d0488a8f033b603072a842\r\n\t79203c3de770580d82d445de62d584f6\r\n\td8113d698853c46b5aef2de7ea786c80\r\n\t9338e8ceffa445b67258a19b9c9bce9e\r\n\ta46bde2c727b9cd786020d6ba1114d2b\r\n\tfadaf09355fa5d9dae4ca30515444d8a\r\n\t253537184cf23cfa4f16af4b04514fce\r\n\tfb8d3c4c262eefe2a49943839c8b5f1e\r\n\t125a9b33b989d003db4fcf11c4809246\r\n\t313f42ddb1a6cecf2be8d2652aa955e2\r\n\tf90e14487c49ef58bc79696e25dcfbd7\r\n\r\nFrom the same GHGist objects, here is the data that their GHGistFile objects contain:\r\n\r\nFilename: Content\r\n\tFile.java: null\r\n\tTestFile.cpp: null\r\n\tTestFile.java: null\r\n\tnewGistFile.java: null\r\n\tSerialzedObjectToBlob.java: null\r\n\tTextFieldConstraints.java: null\r\n\tRun.java: null\r\n\tButton.css: null\r\n\tStringPatterns2.java: null\r\n\tRangeMap.java: null\r\n\tthemeDetector.java: null\r\n\tATestForAnother.java: null\r\n\tClassSerializationFileIO.java: null\r\n\tDisk.java: null\r\n\tFileChecksum.java: null\r\n\tFileWalker.java: null\r\n\tSampleNew.java: null\r\n\tdb.java: null\r\n\tpom.xml: null\r\n\tBegin.java: null\r\n\tCSSBoxStyles.java: null\r\n\tshadow-styles.css: null\r\n\tListOrganizer.java: null\r\n\tOffScreenOffThreadCharts.java: null\r\n\tpackage.sh: null\r\n\tGOGOGadget.css: null\r\n\tGitMeOuttaHere.java: null\r\n\tSomethingDifferent.cpp: null\r\n\tStringBuilder.java: null\r\n\tC.java: null\r\n\tRouter.txt: null\r\n\tSwitchA.text: null\r\n\tSwitchB: null\r\n\tSwitchC.txt: null\r\n\r\n```\r\n\r\nYou can see that the File objects contain the name of the file, but not the content of the file.\r\n\r\nThank you,\r\n\r\nMike", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1325/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1325/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1191", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1191/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1191/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1191/events", - "html_url": "https://github.com/hub4j/github-api/issues/1191", - "id": 932007585, - "node_id": "MDU6SXNzdWU5MzIwMDc1ODU=", - "number": 1191, - "title": "Fix GHContentUpdatedResponse to return GitCommit instead of GHCommit", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 4, - "created_at": "2021-06-28T21:24:35Z", - "updated_at": "2021-11-29T17:58:59Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "In #1185, @takezoe discovered that the date returned for `GHContentUpdatedResponse.commit` does not match up with `GHCommit`. It most closely matches `GHCommit.ShortInfo` but even that is not truly accurate. \r\n\r\nIn #1190 , I figured out that while this a bad the functionality is not completely broken. The `sha` and the `url` match up and that is enough for the `GHCommit` to populate the missing data and continue on. This is still not great because it results in additional requests where there probably shouldn't be any. \r\n\r\n After a bit of digging in the docs, I found an endpoint that [gets a Git Commit](https://docs.github.com/en/rest/reference/git#get-a-commit). What we should do is create a new class called `GitCommit` , matching the structure of this endpoint and then have other classes like `GHCommit.ShortInfo` extend that class. \r\n\r\nFixing this will involve creating a bridge method for `getCommit()` that continues to return a working `GHCommit` while the new official API method returns a `GitCommit`. As part of this, we'll need to add a reflection based call to the `GHCommit`-returning method and verify that instance still works.\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1191/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1191/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1327", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1327/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1327/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1327/events", - "html_url": "https://github.com/hub4j/github-api/issues/1327", - "id": 1065124046, - "node_id": "I_kwDOAAlq-s4_fIDO", - "number": 1327, - "title": "Update Issue and PR templates to be generated from forms", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2021-11-27T20:18:54Z", - "updated_at": "2021-11-27T20:19:02Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Help contributors follow submission guidelines for issue and pull requests in this project by making custom forms for default PR and bug report. \r\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1327/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1327/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1320", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1320/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1320/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1320/events", - "html_url": "https://github.com/hub4j/github-api/issues/1320", - "id": 1061515819, - "node_id": "I_kwDOAAlq-s4_RXIr", - "number": 1320, - "title": "Rename `GHDiscussion` to `GHTeamDiscussion`", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2021-11-23T16:59:53Z", - "updated_at": "2021-11-23T17:02:44Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": null, - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1320/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1320/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1265", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1265/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1265/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1265/events", - "html_url": "https://github.com/hub4j/github-api/issues/1265", - "id": 1027642217, - "node_id": "I_kwDOAAlq-s49QJNp", - "number": 1265, - "title": "GHWorkflow.dispatch does not throw an exception on a 422 HTTP status", - "user": { - "login": "Typraeurion", - "id": 36168707, - "node_id": "MDQ6VXNlcjM2MTY4NzA3", - "avatar_url": "https://avatars.githubusercontent.com/u/36168707?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Typraeurion", - "html_url": "https://github.com/Typraeurion", - "followers_url": "https://api.github.com/users/Typraeurion/followers", - "following_url": "https://api.github.com/users/Typraeurion/following{/other_user}", - "gists_url": "https://api.github.com/users/Typraeurion/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Typraeurion/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Typraeurion/subscriptions", - "organizations_url": "https://api.github.com/users/Typraeurion/orgs", - "repos_url": "https://api.github.com/users/Typraeurion/repos", - "events_url": "https://api.github.com/users/Typraeurion/events{/privacy}", - "received_events_url": "https://api.github.com/users/Typraeurion/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2021-10-15T17:16:10Z", - "updated_at": "2021-11-22T01:31:00Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nI’ve been tracing the code to see why my application apparently succeeds in sending a workflow dispatch request yet the workflow never starts. Eventually I found that after sending a POST request to /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches (no body, because I had passed `null` as the ref), GitHub responds with error 422 Unprocessable Entity. GitHubClient isn’t throwing an exception for this code; instead, the GitHubClient.sendRequest method returns a GitHubResponse,Requester.fetchHttpStatusCode returns 422, and GHWorkflow.dispatch ignores it, so my application thinks the request succeeded when it actually failed.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n```\r\n // authToken, organization, repository, and workflowId are set;\r\n // branch = null; inputs = Collections.emptyMap();\r\n\r\n GHWorkflow workflow = getConnection(authToken).getRepository(\r\n String.format(\"%s/%s\", organization, repository))\r\n .getWorkflow(workflowId);\r\n\r\n workflow.dispatch(branch, Optional.ofNullable(inputs)\r\n .orElse(Collections.emptyMap()));\r\n```\r\n\r\n**Expected behavior**\r\nThe method should either have thrown a GHIOException (or appropriate subclass for HTTP status 422), or should see that `branch` is null and throw an IllegalArgumentException.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: MacOS 11.4\r\n - Java: 1.8.0_162\r\n - github-api Version: 1.133\r\n- okhttp Version: 4.9.2\r\n\r\n**Additional context**\r\nPer https://docs.github.com/en/rest/reference/actions#create-a-workflow-dispatch-event, a `ref` parameter in the request body is *required*.\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1265/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1265/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1291", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1291/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1291/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1291/events", - "html_url": "https://github.com/hub4j/github-api/issues/1291", - "id": 1048007408, - "node_id": "I_kwDOAAlq-s4-d1Lw", - "number": 1291, - "title": "Consider relaxing the requirements for JavaDoc in the project", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2021-11-08T23:04:25Z", - "updated_at": "2021-11-08T23:05:00Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Per discussion with @nedtwigg in #1290 , it might make sense to turn down the warning/linting level for javadoc in the project. \r\n\r\n> I love when javadoc has example inputs/outputs (this project scores 10/10 there) but I'm annoyed by rigid compliance with a javadoc linter forcing that gold to get diluted with \"returns the value\" boilerplate. \r\n\r\nand \r\n\r\n> > Not great but compliant is still better than non-compliant.\r\n> \r\n> Why? I do a lot of work on Spotless, because I think formatting doesn't matter and I don't want to talk about formatting.\r\n> \r\n> When it comes to documentation, I think it does matter, and so it's worth talking about. Automated tools can't say `obviously getFoo() returns foo` vs `it's interesting that getFoo() returns a String guaranteed to start with 'git://'`. So whether or not the documentation adds information beyond what's already in the name and type signature of the method is a human judgement call (for now, copilot is coming for us!). IMO, automated enforcement of\r\n> \r\n> * does this documentation add information? -> return true, always document everything, users don't need to read the implementation\r\n> \r\n> isn't much better than\r\n> \r\n> * does this documentation add information? -> return false, never document anything, users need to read the implementation\r\n> \r\n> If you add `options.addStringOption('Xdoclint:none', '-quiet')` then it will still error for undefined `@link` and things like that, but it lets \"(to / not to) document\" be the judgement call that imo it should be.\r\n> \r\n> ``\r\n\r\nand\r\n\r\n> > could you open an issue for this\r\n> \r\n> I've thought a lot about this topic, and I don't have any more to add besides this:\r\n> \r\n> * Train a low-parameter neural net on the dataset `function name+signature -> javadoc` for your project.\r\n> * For each javadoc, diff the neural net's prediction against what the javadoc actually is\r\n> * Remove all the identical parts of the javadoc\r\n> \r\n> I don't plan to build this, but imo that's the way I would think about it. Happy documenting ;-)\r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1291/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1291/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1279", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1279/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1279/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1279/events", - "html_url": "https://github.com/hub4j/github-api/issues/1279", - "id": 1041406594, - "node_id": "I_kwDOAAlq-s4-EpqC", - "number": 1279, - "title": "GHGist does not handle file truncation", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2021-11-01T17:19:36Z", - "updated_at": "2021-11-01T17:19:36Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "https://docs.github.com/en/rest/reference/gists#truncation points out that file contents are truncated after one megabyte. \r\nThis situation is not handled. \r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1279/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1279/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1266", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1266/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1266/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1266/events", - "html_url": "https://github.com/hub4j/github-api/issues/1266", - "id": 1031052781, - "node_id": "I_kwDOAAlq-s49dJ3t", - "number": 1266, - "title": "Create example for creating submodules within a repo", - "user": { - "login": "balajikadambi", - "id": 25296042, - "node_id": "MDQ6VXNlcjI1Mjk2MDQy", - "avatar_url": "https://avatars.githubusercontent.com/u/25296042?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/balajikadambi", - "html_url": "https://github.com/balajikadambi", - "followers_url": "https://api.github.com/users/balajikadambi/followers", - "following_url": "https://api.github.com/users/balajikadambi/following{/other_user}", - "gists_url": "https://api.github.com/users/balajikadambi/gists{/gist_id}", - "starred_url": "https://api.github.com/users/balajikadambi/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/balajikadambi/subscriptions", - "organizations_url": "https://api.github.com/users/balajikadambi/orgs", - "repos_url": "https://api.github.com/users/balajikadambi/repos", - "events_url": "https://api.github.com/users/balajikadambi/events{/privacy}", - "received_events_url": "https://api.github.com/users/balajikadambi/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - }, - { - "id": 2070644911, - "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", - "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", - "name": "documentation", - "color": "6ee5cb", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2021-10-20T07:04:00Z", - "updated_at": "2021-10-21T16:48:01Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Is there an API to create sub modules within a repository? Any help to handle this programmatically is appreciated.\r\nThanks for your help!\r\n\r\nRegards,\r\nBalaji", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1266/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1266/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - } - ] -} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/7-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/7-search_issues.json deleted file mode 100644 index 394b503189..0000000000 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/7-search_issues.json +++ /dev/null @@ -1,2739 +0,0 @@ -{ - "total_count": 164, - "incomplete_results": false, - "items": [ - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/833", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/833/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/833/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/833/events", - "html_url": "https://github.com/hub4j/github-api/issues/833", - "id": 626776927, - "node_id": "MDU6SXNzdWU2MjY3NzY5Mjc=", - "number": 833, - "title": "Stop using `getUrl()` for populate and refresh actions", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2020-05-28T20:00:43Z", - "updated_at": "2021-09-26T20:52:32Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "The urls returned from github are often problematic and inaccurate. \r\n\r\nExample: \r\nThe url return `getRef()` returns a url with `git/refs` in it, even when the original query was to `git/ref`. \r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/833/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/833/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1217", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1217/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1217/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1217/events", - "html_url": "https://github.com/hub4j/github-api/issues/1217", - "id": 982693023, - "node_id": "MDU6SXNzdWU5ODI2OTMwMjM=", - "number": 1217, - "title": "Issues for tree in commit", - "user": { - "login": "Osiris-Team", - "id": 59899645, - "node_id": "MDQ6VXNlcjU5ODk5NjQ1", - "avatar_url": "https://avatars.githubusercontent.com/u/59899645?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/Osiris-Team", - "html_url": "https://github.com/Osiris-Team", - "followers_url": "https://api.github.com/users/Osiris-Team/followers", - "following_url": "https://api.github.com/users/Osiris-Team/following{/other_user}", - "gists_url": "https://api.github.com/users/Osiris-Team/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Osiris-Team/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Osiris-Team/subscriptions", - "organizations_url": "https://api.github.com/users/Osiris-Team/orgs", - "repos_url": "https://api.github.com/users/Osiris-Team/repos", - "events_url": "https://api.github.com/users/Osiris-Team/events{/privacy}", - "received_events_url": "https://api.github.com/users/Osiris-Team/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - }, - { - "id": 2070644911, - "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", - "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", - "name": "documentation", - "color": "6ee5cb", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2021-08-30T11:31:56Z", - "updated_at": "2021-09-24T06:40:37Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\n```log\r\nError: Exception in thread \"main\" org.kohsuke.github.HttpException: {\"message\":\"tree.path cannot start with a slash\",\"documentation_url\":\"https://docs.github.com/rest/reference/git#create-a-tree\"}\r\n\tat org.kohsuke.github.GitHubClient.interpretApiError(GitHubClient.java:483)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:407)\r\n\tat org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:355)\r\n\tat org.kohsuke.github.Requester.fetch(Requester.java:76)\r\n\tat org.kohsuke.github.GHTreeBuilder.create(GHTreeBuilder.java:171)\r\n\tat com.osiris.pandomiumbuilder.STEP3.(STEP3.java:140)\r\n\tat com.osiris.pandomiumbuilder.Main.main(Main.java:49)\r\nCaused by: java.io.IOException: Server returned HTTP response code: 422 for URL: https://api.github.com/repos/Osiris-Team/pandomium/git/trees\r\n...\r\n```\r\n\r\n**To Reproduce**\r\n```java\r\n...\r\n System.out.println(\"Authenticating with token...\");\r\n GitHub github = new GitHubBuilder().withOAuthToken(O_AUTH_TOKEN).build();\r\n System.out.println(\"Success!\");\r\n System.out.println(\"Getting repo: '\"+OWNER_AND_REPO+\"'...\");\r\n repo = github.getRepository(OWNER_AND_REPO);\r\n System.out.println(\"Success!\");\r\n System.out.println(\"Committing updated files...\");\r\n GHRef mainRef = repo.getRef(\"heads/master\");\r\n String mainTreeSha = repo.getTreeRecursive(\"master\", 1).getSha();\r\n GHTreeBuilder treeBuilder = repo.createTree().baseTree(mainTreeSha);\r\n commitFile(treeBuilder, mavenInstallScript);\r\n commitFile(treeBuilder, pandomiumParentPomFile);\r\n commitFile(treeBuilder, pandomiumPomFile);\r\n for (File fatJar :\r\n fatJars) {\r\n commitFile(treeBuilder, fatJar);\r\n }\r\n String treeSha = treeBuilder.create().getSha(); // THIS IS LINE 140 WHERE THE EXCEPTION GETS THROWN\r\n GHCommit commit = repo.createCommit().message(\"Add files\")\r\n .tree(treeSha)\r\n .message(fullTagName+\" - Updated files\")\r\n .author(\"author\", \"pandomium@builder.com\", new Date())\r\n .committer(\"committer\", \"pandomium@builder.com\", new Date())\r\n .parent(mainRef.getObject().getSha())\r\n .create();\r\n String commitSha = commit.getSHA1();\r\n mainRef.updateTo(commitSha);\r\n System.out.println(\"Success!\");\r\n }\r\n\r\n private void commitFile(GHTreeBuilder treeBuilder, File file) throws IOException {\r\n treeBuilder.add(file.getAbsolutePath(), Files.readAllBytes(file.toPath()), false);\r\n }\r\n```\r\n\r\n**Expected behavior**\r\nCreate commit without exception and push it to the repo.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: Windows\r\n - Browser Chrome\r\n - Version latest", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1217/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1217/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1181", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1181/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1181/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1181/events", - "html_url": "https://github.com/hub4j/github-api/issues/1181", - "id": 916818327, - "node_id": "MDU6SXNzdWU5MTY4MTgzMjc=", - "number": 1181, - "title": "Create a new implementation for issue events that aligns with webhook event design ", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - }, - { - "id": 1780165359, - "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", - "name": "breaking change", - "color": "b60205", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2021-06-10T02:14:49Z", - "updated_at": "2021-07-26T19:19:51Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Found by #1175 \r\nRelated #1199 \r\n\r\nIssue events are similar to webhook events: there are a set of common attributes and then different events types have different additional fields.\r\n\r\nSee:\r\n* https://docs.github.com/en/developers/webhooks-and-events/events/issue-event-types#issue-event-object-common-properties\r\n* https://github.com/hub4j/github-api/blob/main/src/main/java/org/kohsuke/github/GHEventPayload.java#L22-L24\r\n\r\nHowever, `GHIssueEvent` is implemented completely differently from `GHEvent` and `GHEventPayload`. We should have a design that is similar instead. \r\n\r\nDoing this is likely either a breaking change or at very least an addition of a new API and deprecation of the current classes. \r\n\r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1181/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1181/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/836", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/836/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/836/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/836/events", - "html_url": "https://github.com/hub4j/github-api/issues/836", - "id": 630834026, - "node_id": "MDU6SXNzdWU2MzA4MzQwMjY=", - "number": 836, - "title": "Enable adding labels if User has triage role", - "user": { - "login": "blacelle", - "id": 2117911, - "node_id": "MDQ6VXNlcjIxMTc5MTE=", - "avatar_url": "https://avatars.githubusercontent.com/u/2117911?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/blacelle", - "html_url": "https://github.com/blacelle", - "followers_url": "https://api.github.com/users/blacelle/followers", - "following_url": "https://api.github.com/users/blacelle/following{/other_user}", - "gists_url": "https://api.github.com/users/blacelle/gists{/gist_id}", - "starred_url": "https://api.github.com/users/blacelle/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/blacelle/subscriptions", - "organizations_url": "https://api.github.com/users/blacelle/orgs", - "repos_url": "https://api.github.com/users/blacelle/repos", - "events_url": "https://api.github.com/users/blacelle/events{/privacy}", - "received_events_url": "https://api.github.com/users/blacelle/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1686290078, - "node_id": "MDU6TGFiZWwxNjg2MjkwMDc4", - "url": "https://api.github.com/repos/hub4j/github-api/labels/external", - "name": "external", - "color": "a0a0a0", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 9, - "created_at": "2020-06-04T13:39:08Z", - "updated_at": "2021-07-21T15:47:43Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nGiven a user with Triage access, labels are not added when creating an issue.\r\n\r\n**To Reproduce**\r\n1. Give a user Triage access to a repo\r\n2. Create a Ticket with one label\r\n\r\nThe label is not applied.\r\n\r\n**Expected behavior**\r\nGiven Triage allow applying labels, I expect my label to be applied.\r\n\r\nhttps://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization\r\n\r\nIt appears I can add the labels once the issue is created\r\n\r\nConfirmed with 1.112\r\n\r\nTypically, in this usecase, I sucvcessfully apply with labels with something like:\r\n\r\n```\r\n\t\t\tGHIssue issue = building.create();\r\n\r\n\t\t\tlabels.forEach(t -> {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tissue.addLabels(t);\r\n\t\t\t\t} catch (IOException e) {\r\n\t\t\t\t\tthrow new UncheckedIOException(e);\r\n\t\t\t\t}\r\n\t\t\t});\r\n```\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/836/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/836/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/829", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/829/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/829/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/829/events", - "html_url": "https://github.com/hub4j/github-api/issues/829", - "id": 625251397, - "node_id": "MDU6SXNzdWU2MjUyNTEzOTc=", - "number": 829, - "title": "Documentation for create Branch and PR for new changes in branch", - "user": { - "login": "riddhi2910", - "id": 32148809, - "node_id": "MDQ6VXNlcjMyMTQ4ODA5", - "avatar_url": "https://avatars.githubusercontent.com/u/32148809?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/riddhi2910", - "html_url": "https://github.com/riddhi2910", - "followers_url": "https://api.github.com/users/riddhi2910/followers", - "following_url": "https://api.github.com/users/riddhi2910/following{/other_user}", - "gists_url": "https://api.github.com/users/riddhi2910/gists{/gist_id}", - "starred_url": "https://api.github.com/users/riddhi2910/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/riddhi2910/subscriptions", - "organizations_url": "https://api.github.com/users/riddhi2910/orgs", - "repos_url": "https://api.github.com/users/riddhi2910/repos", - "events_url": "https://api.github.com/users/riddhi2910/events{/privacy}", - "received_events_url": "https://api.github.com/users/riddhi2910/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 2070644911, - "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", - "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", - "name": "documentation", - "color": "6ee5cb", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2020-05-26T22:56:14Z", - "updated_at": "2021-07-19T23:57:22Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Hello,\r\n\r\nI don't see enough documentation on how to create branch and then pull requests for changes in that branch.\r\n\r\nCould you please help me with that?\r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/829/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/829/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1133", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1133/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1133/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1133/events", - "html_url": "https://github.com/hub4j/github-api/issues/1133", - "id": 873785408, - "node_id": "MDU6SXNzdWU4NzM3ODU0MDg=", - "number": 1133, - "title": "Feature request - support for code scanning", - "user": { - "login": "SavvasKatsuyaSawada", - "id": 43150831, - "node_id": "MDQ6VXNlcjQzMTUwODMx", - "avatar_url": "https://avatars.githubusercontent.com/u/43150831?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/SavvasKatsuyaSawada", - "html_url": "https://github.com/SavvasKatsuyaSawada", - "followers_url": "https://api.github.com/users/SavvasKatsuyaSawada/followers", - "following_url": "https://api.github.com/users/SavvasKatsuyaSawada/following{/other_user}", - "gists_url": "https://api.github.com/users/SavvasKatsuyaSawada/gists{/gist_id}", - "starred_url": "https://api.github.com/users/SavvasKatsuyaSawada/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/SavvasKatsuyaSawada/subscriptions", - "organizations_url": "https://api.github.com/users/SavvasKatsuyaSawada/orgs", - "repos_url": "https://api.github.com/users/SavvasKatsuyaSawada/repos", - "events_url": "https://api.github.com/users/SavvasKatsuyaSawada/events{/privacy}", - "received_events_url": "https://api.github.com/users/SavvasKatsuyaSawada/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": { - "login": "akashRindhe", - "id": 14114123, - "node_id": "MDQ6VXNlcjE0MTE0MTIz", - "avatar_url": "https://avatars.githubusercontent.com/u/14114123?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/akashRindhe", - "html_url": "https://github.com/akashRindhe", - "followers_url": "https://api.github.com/users/akashRindhe/followers", - "following_url": "https://api.github.com/users/akashRindhe/following{/other_user}", - "gists_url": "https://api.github.com/users/akashRindhe/gists{/gist_id}", - "starred_url": "https://api.github.com/users/akashRindhe/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/akashRindhe/subscriptions", - "organizations_url": "https://api.github.com/users/akashRindhe/orgs", - "repos_url": "https://api.github.com/users/akashRindhe/repos", - "events_url": "https://api.github.com/users/akashRindhe/events{/privacy}", - "received_events_url": "https://api.github.com/users/akashRindhe/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "assignees": [ - { - "login": "akashRindhe", - "id": 14114123, - "node_id": "MDQ6VXNlcjE0MTE0MTIz", - "avatar_url": "https://avatars.githubusercontent.com/u/14114123?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/akashRindhe", - "html_url": "https://github.com/akashRindhe", - "followers_url": "https://api.github.com/users/akashRindhe/followers", - "following_url": "https://api.github.com/users/akashRindhe/following{/other_user}", - "gists_url": "https://api.github.com/users/akashRindhe/gists{/gist_id}", - "starred_url": "https://api.github.com/users/akashRindhe/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/akashRindhe/subscriptions", - "organizations_url": "https://api.github.com/users/akashRindhe/orgs", - "repos_url": "https://api.github.com/users/akashRindhe/repos", - "events_url": "https://api.github.com/users/akashRindhe/events{/privacy}", - "received_events_url": "https://api.github.com/users/akashRindhe/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - } - ], - "milestone": null, - "comments": 2, - "created_at": "2021-05-01T22:45:04Z", - "updated_at": "2021-05-16T17:16:26Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Can you please correct me if I am wrong, but I cannot find implementation for access code scanning.\r\n\r\nI would love that the code scanning feature is supported in the library.\r\nhttps://docs.github.com/en/rest/reference/code-scanning\r\n\r\nI'm using: org.kohsuke:github-api:1.128", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1133/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1133/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1140", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1140/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1140/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1140/events", - "html_url": "https://github.com/hub4j/github-api/issues/1140", - "id": 881974654, - "node_id": "MDU6SXNzdWU4ODE5NzQ2NTQ=", - "number": 1140, - "title": "stargazercount is 0 unless fetched directly", - "user": { - "login": "maxandersen", - "id": 54129, - "node_id": "MDQ6VXNlcjU0MTI5", - "avatar_url": "https://avatars.githubusercontent.com/u/54129?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/maxandersen", - "html_url": "https://github.com/maxandersen", - "followers_url": "https://api.github.com/users/maxandersen/followers", - "following_url": "https://api.github.com/users/maxandersen/following{/other_user}", - "gists_url": "https://api.github.com/users/maxandersen/gists{/gist_id}", - "starred_url": "https://api.github.com/users/maxandersen/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/maxandersen/subscriptions", - "organizations_url": "https://api.github.com/users/maxandersen/orgs", - "repos_url": "https://api.github.com/users/maxandersen/repos", - "events_url": "https://api.github.com/users/maxandersen/events{/privacy}", - "received_events_url": "https://api.github.com/users/maxandersen/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 3, - "created_at": "2021-05-09T08:04:50Z", - "updated_at": "2021-05-12T03:47:13Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nUsing latest 1.128:\r\n\r\n`ghContent.getOwner().getStarGazersCount()` returns 0, but\r\n`gitHub.getRepository(ghContent.getOwner().getFullName()).getStargazersCount());` returns the proper count.\r\n\r\nProbably related to #349 and #1068 \r\n\r\n**Expected behavior**\r\nstargazer count should be fetched, throw error or return -1 or similar - anything but returning 0.\r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1140/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1140/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1138", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1138/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1138/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1138/events", - "html_url": "https://github.com/hub4j/github-api/issues/1138", - "id": 880034392, - "node_id": "MDU6SXNzdWU4ODAwMzQzOTI=", - "number": 1138, - "title": "Add request information (endpoint or GraphQL query details) to all data objects", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - }, - { - "id": 1686292366, - "node_id": "MDU6TGFiZWwxNjg2MjkyMzY2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/more%20information%20needed", - "name": "more information needed", - "color": "9ce1ed", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2021-05-08T01:05:42Z", - "updated_at": "2021-05-09T00:41:11Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Different endpoints in the REST API return different subsets of various data types. `GHRepository` comes in any number of forms depending on what endpoint is returning it. When we implement GraphQL support this will be even more common: each query can return a different set of fields and relationships for each data type. \r\n\r\nIf we had information about the request that returned a particular record, it would be possible to predict whether a particular field has already been populated or if a refresh is needed to get that information. \r\n \r\n\r\nhttps://github.com/hub4j/github-api/pull/1136#issuecomment-834919797\r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1138/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1138/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1098", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1098/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1098/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1098/events", - "html_url": "https://github.com/hub4j/github-api/issues/1098", - "id": 858301287, - "node_id": "MDU6SXNzdWU4NTgzMDEyODc=", - "number": 1098, - "title": "Implement better common behavior/handler for 202 responses ", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2021-04-14T22:07:09Z", - "updated_at": "2021-04-14T22:07:25Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "See #1095 . \r\n\r\n> We should probably implement a 202 handling behavior in GitHubClient. Currently, forking and statistics both implement their own waiting behavior. However, now that I look at it forking returns a GHRepository on success, so maybe the waiting behavior isn't correct.\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1098/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1098/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/875", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/875/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/875/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/875/events", - "html_url": "https://github.com/hub4j/github-api/issues/875", - "id": 649854895, - "node_id": "MDU6SXNzdWU2NDk4NTQ4OTU=", - "number": 875, - "title": "Add symlink support", - "user": { - "login": "jtnord", - "id": 494726, - "node_id": "MDQ6VXNlcjQ5NDcyNg==", - "avatar_url": "https://avatars.githubusercontent.com/u/494726?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/jtnord", - "html_url": "https://github.com/jtnord", - "followers_url": "https://api.github.com/users/jtnord/followers", - "following_url": "https://api.github.com/users/jtnord/following{/other_user}", - "gists_url": "https://api.github.com/users/jtnord/gists{/gist_id}", - "starred_url": "https://api.github.com/users/jtnord/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/jtnord/subscriptions", - "organizations_url": "https://api.github.com/users/jtnord/orgs", - "repos_url": "https://api.github.com/users/jtnord/repos", - "events_url": "https://api.github.com/users/jtnord/events{/privacy}", - "received_events_url": "https://api.github.com/users/jtnord/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 11, - "created_at": "2020-07-02T11:24:56Z", - "updated_at": "2021-03-23T08:22:37Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\n\r\nif a symlink exists in the repository it does not seem possible to resolve it using the current API methods\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. create a repo\r\n2. create a directory `dir`\r\n3. create a file `file` in `dir` with contents `hello world`\r\n4. create a symlink `dir-link` pointing to `dir`\r\n5. create a symlink `file-link` pointing to `dir/file`\r\n6. use the api to try and resolve `dir-link` or `file-link`\r\n\r\n**Expected behavior**\r\n\r\nThere is an API that can be used to resolve the symbolic links to the actual files\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: N/A\r\n - Browser N/A\r\n - Version N/A\r\n\r\n**Additional context**\r\n\r\nhttps://issues.jenkins-ci.org/browse/JENKINS-62922\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/875/reactions", - "total_count": 2, - "+1": 2, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/875/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1058", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1058/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1058/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1058/events", - "html_url": "https://github.com/hub4j/github-api/issues/1058", - "id": 832067018, - "node_id": "MDU6SXNzdWU4MzIwNjcwMTg=", - "number": 1058, - "title": "Refactor GHEventPayload inner classes into top level classes in a new namespace", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 3, - "created_at": "2021-03-15T18:11:18Z", - "updated_at": "2021-03-18T11:11:57Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "[GHEventPayload](https://github.com/hub4j/github-api/blob/master/src/main/java/org/kohsuke/github/GHEventPayload.java) is one monolithic class with a bunch of inner classes for payloads. We should look at refactoring these inner classes into their own files in a separate namespace.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1058/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1058/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/970", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/970/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/970/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/970/events", - "html_url": "https://github.com/hub4j/github-api/issues/970", - "id": 733050512, - "node_id": "MDU6SXNzdWU3MzMwNTA1MTI=", - "number": 970, - "title": "Document reading pages of items", - "user": { - "login": "eric-5512", - "id": 56282991, - "node_id": "MDQ6VXNlcjU2MjgyOTkx", - "avatar_url": "https://avatars.githubusercontent.com/u/56282991?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/eric-5512", - "html_url": "https://github.com/eric-5512", - "followers_url": "https://api.github.com/users/eric-5512/followers", - "following_url": "https://api.github.com/users/eric-5512/following{/other_user}", - "gists_url": "https://api.github.com/users/eric-5512/gists{/gist_id}", - "starred_url": "https://api.github.com/users/eric-5512/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/eric-5512/subscriptions", - "organizations_url": "https://api.github.com/users/eric-5512/orgs", - "repos_url": "https://api.github.com/users/eric-5512/repos", - "events_url": "https://api.github.com/users/eric-5512/events{/privacy}", - "received_events_url": "https://api.github.com/users/eric-5512/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 2070644911, - "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", - "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", - "name": "documentation", - "color": "6ee5cb", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 8, - "created_at": "2020-10-30T10:14:06Z", - "updated_at": "2021-03-15T18:35:42Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Return open or closed issues in pagination\r\n\r\n```\r\npublic List getIssues(GHIssueState state) throws IOException {\r\n return this.listIssues(state).toList();\r\n }\r\n\r\n public List getIssues(GHIssueState state, GHMilestone milestone) throws IOException {\r\n Requester requester = (Requester)((Requester)this.root.createRequest().with(\"state\", state)).with(\"milestone\", milestone == null ? \"none\" : \"\" + milestone.getNumber());\r\n return ((Requester)requester.withUrlPath(this.getApiTailUrl(\"issues\"), new String[0])).toIterable(GHIssue[].class, (item) -> {\r\n item.wrap(this);\r\n }).toList();\r\n }\r\n```\r\n\r\nI didn’t see any support for paging\r\n\r\n![image](https://user-images.githubusercontent.com/56282991/97699344-ef06d480-1ae4-11eb-9257-651b209018b0.png)\r\n\r\nNeed to manually specify page and pre_page", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/970/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/970/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/902", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/902/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/902/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/902/events", - "html_url": "https://github.com/hub4j/github-api/issues/902", - "id": 666414517, - "node_id": "MDU6SXNzdWU2NjY0MTQ1MTc=", - "number": 902, - "title": "GithubRequest.with() methods should not silently ignore null values ", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1780165359, - "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", - "name": "breaking change", - "color": "b60205", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2020-07-27T16:13:16Z", - "updated_at": "2021-02-11T20:06:07Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "The `GithubRequest.with()` currently discard null values. Only `GithubRequest.withNullable()` keeps them. This is convenient sometimes but leaves things open for confusing issues with missing fields. Also, the presence of `withNullable()` implies (via Spotbugs annotations) that the `with()` methods require `Nonnull`. \r\n\r\nConsider adding a `withOptional()` that ignores `null` values and changing `with()` to not ignore `null` values. \r\n\r\nSee #899 \r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/902/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/902/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/929", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/929/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/929/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/929/events", - "html_url": "https://github.com/hub4j/github-api/issues/929", - "id": 680693157, - "node_id": "MDU6SXNzdWU2ODA2OTMxNTc=", - "number": 929, - "title": "Include Project card details into response when listing issue events", - "user": { - "login": "annguyen-qh", - "id": 20037026, - "node_id": "MDQ6VXNlcjIwMDM3MDI2", - "avatar_url": "https://avatars.githubusercontent.com/u/20037026?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/annguyen-qh", - "html_url": "https://github.com/annguyen-qh", - "followers_url": "https://api.github.com/users/annguyen-qh/followers", - "following_url": "https://api.github.com/users/annguyen-qh/following{/other_user}", - "gists_url": "https://api.github.com/users/annguyen-qh/gists{/gist_id}", - "starred_url": "https://api.github.com/users/annguyen-qh/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/annguyen-qh/subscriptions", - "organizations_url": "https://api.github.com/users/annguyen-qh/orgs", - "repos_url": "https://api.github.com/users/annguyen-qh/repos", - "events_url": "https://api.github.com/users/annguyen-qh/events{/privacy}", - "received_events_url": "https://api.github.com/users/annguyen-qh/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 6, - "created_at": "2020-08-18T05:04:44Z", - "updated_at": "2021-01-21T16:39:10Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "It would be great if the `GHIssueEvent` class could include Project card details. This information is valuable with project-related issue events\r\n\r\nThe relevant GitHub API endpoint is `GET /repos/:owner/:repo/issues/:issue_number/events` - https://developer.github.com/v3/issues/events/#list-issue-events\r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/929/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/929/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1019", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1019/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1019/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1019/events", - "html_url": "https://github.com/hub4j/github-api/issues/1019", - "id": 784310675, - "node_id": "MDU6SXNzdWU3ODQzMTA2NzU=", - "number": 1019, - "title": "Unable to download asset from release in private repository", - "user": { - "login": "filipjonckers", - "id": 3816316, - "node_id": "MDQ6VXNlcjM4MTYzMTY=", - "avatar_url": "https://avatars.githubusercontent.com/u/3816316?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/filipjonckers", - "html_url": "https://github.com/filipjonckers", - "followers_url": "https://api.github.com/users/filipjonckers/followers", - "following_url": "https://api.github.com/users/filipjonckers/following{/other_user}", - "gists_url": "https://api.github.com/users/filipjonckers/gists{/gist_id}", - "starred_url": "https://api.github.com/users/filipjonckers/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/filipjonckers/subscriptions", - "organizations_url": "https://api.github.com/users/filipjonckers/orgs", - "repos_url": "https://api.github.com/users/filipjonckers/repos", - "events_url": "https://api.github.com/users/filipjonckers/events{/privacy}", - "received_events_url": "https://api.github.com/users/filipjonckers/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2021-01-12T14:57:31Z", - "updated_at": "2021-01-12T20:06:05Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "I'm trying to download assets from a private repository - the asset is a jar/zip file which is saved in the latest release.\r\nI'm able to connect and see the asset but cannot figure out how to download the asset into a local file using the existing GitHub connection.\r\nThe response I get when trying to download is: **HTTP/1.1 406 Not Acceptable**\r\nAs mentioned in the API documentation, the accept header is set to **application/octet-stream**\r\nI am probably doing something wring in the authentication part...\r\n\r\nHow should I tackle this?\r\n\r\nSource code of a test method:\r\n\r\n```java\r\n private void testGitHubReleaseAssetDownload(final String jwtToken, final String repoFullName) {\r\n try {\r\n GitHub githubBuilder = new GitHubBuilder().withJwtToken(jwtToken).build();\r\n GHAppInstallation appInstallation = githubBuilder.getApp().getInstallationById(GITHUB_APP_INSTALLATION_ID);\r\n GHAppInstallationToken appInstallationToken = appInstallation.createToken(appInstallation.getPermissions()).create();\r\n GitHub github = new GitHubBuilder().withAppInstallationToken(appInstallationToken.getToken()).build();\r\n LOGGER.info(\"Credentials are: {}\", github.isCredentialValid() ? \"valid\" : \"invalid\");\r\n\r\n GHRepository repo = github.getRepository(repoFullName);\r\n GHRelease release = repo.getLatestRelease();\r\n GHAsset asset = release.listAssets().toList().get(0);\r\n\r\n File file = new File(\".\", asset.getName());\r\n String downloadUrl = asset.getBrowserDownloadUrl();\r\n String githubToken = appInstallationToken.getToken();\r\n\r\n try (CloseableHttpClient httpClient = HttpClients.createDefault()) {\r\n HttpGet httpGet = new HttpGet(downloadUrl);\r\n httpGet.addHeader(\"authorization:\", \"token \" + githubToken);\r\n httpGet.addHeader(\"Accept:\", \"application/octet-stream\");\r\n try (CloseableHttpResponse httpResponse = httpClient.execute(httpGet)) {\r\n // response: HTTP/1.1 406 Not Acceptable\r\n if (httpResponse.getStatusLine().getStatusCode() == 200) {\r\n HttpEntity entity = httpResponse.getEntity();\r\n if(entity.getContentLength() > 0) {\r\n FileUtils.copyInputStreamToFile(entity.getContent(), file);\r\n }\r\n }\r\n }\r\n httpGet.releaseConnection();\r\n } catch (IOException e) {\r\n LOGGER.error(\"unable to download asset: {}\", downloadUrl);\r\n }\r\n } catch (Exception e) {\r\n LOGGER.error(\"ERROR: {}\", e.toString());\r\n }\r\n }\r\n```\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1019/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1019/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/789", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/789/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/789/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/789/events", - "html_url": "https://github.com/hub4j/github-api/issues/789", - "id": 601236800, - "node_id": "MDU6SXNzdWU2MDEyMzY4MDA=", - "number": 789, - "title": "Github is dropping support for HTTP basic auth", - "user": { - "login": "csdev", - "id": 1824428, - "node_id": "MDQ6VXNlcjE4MjQ0Mjg=", - "avatar_url": "https://avatars.githubusercontent.com/u/1824428?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/csdev", - "html_url": "https://github.com/csdev", - "followers_url": "https://api.github.com/users/csdev/followers", - "following_url": "https://api.github.com/users/csdev/following{/other_user}", - "gists_url": "https://api.github.com/users/csdev/gists{/gist_id}", - "starred_url": "https://api.github.com/users/csdev/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/csdev/subscriptions", - "organizations_url": "https://api.github.com/users/csdev/orgs", - "repos_url": "https://api.github.com/users/csdev/repos", - "events_url": "https://api.github.com/users/csdev/events{/privacy}", - "received_events_url": "https://api.github.com/users/csdev/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 17, - "created_at": "2020-04-16T16:41:55Z", - "updated_at": "2020-11-17T01:46:53Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Github is dropping support for basic auth on Nov 13, 2020 (with service brownouts on Sep 30 and Oct 28)\r\nhttps://developer.github.com/changes/2020-02-14-deprecating-password-auth/\r\n\r\nWe should make sure that we support using personal access tokens with the `Authorization: token` header. We may also want to issue deprecation warnings if users continue to use basic auth:\r\nhttps://github.com/github-api/github-api/blob/5c9474d1c891121f11ce9c31b51d42216a8e416f/src/main/java/org/kohsuke/github/GitHubClient.java#L119-L123", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/789/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/789/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/915", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/915/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/915/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/915/events", - "html_url": "https://github.com/hub4j/github-api/issues/915", - "id": 672648458, - "node_id": "MDU6SXNzdWU2NzI2NDg0NTg=", - "number": 915, - "title": "Unable to clone submodules", - "user": { - "login": "saptakniyogi", - "id": 13414332, - "node_id": "MDQ6VXNlcjEzNDE0MzMy", - "avatar_url": "https://avatars.githubusercontent.com/u/13414332?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/saptakniyogi", - "html_url": "https://github.com/saptakniyogi", - "followers_url": "https://api.github.com/users/saptakniyogi/followers", - "following_url": "https://api.github.com/users/saptakniyogi/following{/other_user}", - "gists_url": "https://api.github.com/users/saptakniyogi/gists{/gist_id}", - "starred_url": "https://api.github.com/users/saptakniyogi/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/saptakniyogi/subscriptions", - "organizations_url": "https://api.github.com/users/saptakniyogi/orgs", - "repos_url": "https://api.github.com/users/saptakniyogi/repos", - "events_url": "https://api.github.com/users/saptakniyogi/events{/privacy}", - "received_events_url": "https://api.github.com/users/saptakniyogi/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 6, - "created_at": "2020-08-04T09:29:28Z", - "updated_at": "2020-08-25T13:12:51Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nWhen Github organization scans for repos, it fails if the repo contains submodules with following error:\r\nCaused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `[Lorg.kohsuke.github.GHContent;` out of START_OBJECT token\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Scan Github Org with repos having sub-modules\r\n\r\n**Expected behavior**\r\nScan and clone the sub-modules\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: Windows Server 2016\r\n - Browser: Chrome\r\n - Version 1.115\r\n\r\n**Additional context**\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/915/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/915/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/903", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/903/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/903/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/903/events", - "html_url": "https://github.com/hub4j/github-api/issues/903", - "id": 666484469, - "node_id": "MDU6SXNzdWU2NjY0ODQ0Njk=", - "number": 903, - "title": "Consider using URI Templates instead of constructing url strings", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2020-07-27T18:07:44Z", - "updated_at": "2020-07-27T18:07:50Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Using URI Templates would make it clearer what parts of Requests are supposed to be in the URL and which should be passed as JSON. This would also simplify `GitHubRequest` and `GitHubClient`. \r\n\r\nOne example of a library that could be used: https://github.com/damnhandy/Handy-URI-Templates\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/903/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/903/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/763", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/763/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/763/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/763/events", - "html_url": "https://github.com/hub4j/github-api/issues/763", - "id": 591188016, - "node_id": "MDU6SXNzdWU1OTExODgwMTY=", - "number": 763, - "title": "Add and enforce copyright at the top of all code files", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2020-03-31T15:08:44Z", - "updated_at": "2020-07-17T20:08:43Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/763/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/763/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/881", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/881/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/881/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/881/events", - "html_url": "https://github.com/hub4j/github-api/issues/881", - "id": 652686003, - "node_id": "MDU6SXNzdWU2NTI2ODYwMDM=", - "number": 881, - "title": "Update to handle updated git references api ", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2020-07-07T22:10:07Z", - "updated_at": "2020-07-08T21:43:47Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Version 2.18 and older use this: \r\nhttps://docs.github.com/en/enterprise/2.18/user/rest/reference/git#get-all-references\r\n\r\nVersion 2.19 and new use this: \r\nhttps://docs.github.com/en/rest/reference/git#references\r\n\r\n\r\nSpecifically, getting references is now done using `git/matching-refs` instead of `git/refs`. \r\n\r\nSee #822, #842, #844, #845. Also see #852 for likely feature that needs to be added to make this safe. \r\n\r\nThat said 2.18 will be unsupported after August 2020. Perhaps the right behavior is to try default to the new API and have a switch to enable the old one. \r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/881/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/881/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/347", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/347/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/347/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/347/events", - "html_url": "https://github.com/hub4j/github-api/issues/347", - "id": 211134155, - "node_id": "MDU6SXNzdWUyMTExMzQxNTU=", - "number": 347, - "title": "Get fast issue/pull number from notifications", - "user": { - "login": "rnveach", - "id": 5427943, - "node_id": "MDQ6VXNlcjU0Mjc5NDM=", - "avatar_url": "https://avatars.githubusercontent.com/u/5427943?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/rnveach", - "html_url": "https://github.com/rnveach", - "followers_url": "https://api.github.com/users/rnveach/followers", - "following_url": "https://api.github.com/users/rnveach/following{/other_user}", - "gists_url": "https://api.github.com/users/rnveach/gists{/gist_id}", - "starred_url": "https://api.github.com/users/rnveach/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/rnveach/subscriptions", - "organizations_url": "https://api.github.com/users/rnveach/orgs", - "repos_url": "https://api.github.com/users/rnveach/repos", - "events_url": "https://api.github.com/users/rnveach/events{/privacy}", - "received_events_url": "https://api.github.com/users/rnveach/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2017-03-01T16:28:19Z", - "updated_at": "2020-06-07T21:39:38Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "The only way to get the issue/pull number from notifications is like below:\r\n````\r\n\t\tGitHub github = GitHub.connect();\r\n\r\n\t\tGHNotificationStream stream = github.listNotifications();\r\n\r\n\t\tfor (GHThread t : stream.nonBlocking(true).participating(false).read(true)) {\r\n\t\t\tSystem.out.println((t.getBoundIssue() != null ? t.getBoundIssue().getNumber() : \"\"));\r\n\t\t}\r\n````\r\n\r\nThe problem with this is `getBoundIssue` makes another service call just to get all the information on the issue. I just want the issue number for quick display which is already stored in the `subject.url` but I don't there is no public method to access it.\r\nI think it would be great if there was a simple method like `getIssueNumber` and `getPullNumber`.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/347/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/347/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/589", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/589/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/589/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/589/events", - "html_url": "https://github.com/hub4j/github-api/issues/589", - "id": 516256769, - "node_id": "MDU6SXNzdWU1MTYyNTY3Njk=", - "number": 589, - "title": "Final instances vs Incomplete instances vs Update-in-place", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - }, - { - "id": 1780165359, - "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", - "name": "breaking change", - "color": "b60205", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2019-11-01T17:46:33Z", - "updated_at": "2020-06-07T20:56:37Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "#495 and #496 raise an interesting point. Also #584.\r\n\r\nThis project currently tends to treat instances of data objects as \"final\" - you request an Issue and the instance you requested never changes after that. That instance is a stable snapshot and can be used as a key in a HashSet or Map without fear of it changing. \r\n\r\nWe also have action and update methods on these objects. In general, these methods update the state of the server-side object the instance is based on, but do not change the data in the instance. You call `close()` or `delete()` or one of the `set*` methods and a request is sent to change the object on the server, but the data in the local instance doesn't update to match. This is consistent with the \"final instances\" model but has some problems. There's no batching of updates (each action is another query) and since the local instance is out of date, updates can end up overwriting each other as in #495. The only current workaround is send another request to get a fresh instance for each update. 😱 \r\n\r\nThe `Builder/Updater` pattern added to some objects addresses this by batching updates together and then returning a new instance matching those updates. This solves the problem of stale data but results in verbose `item.update().title('New Title').update()` syntax for single field changes. It does partially unblock update-in-place as `item = item.update().title('New Title').update()`. \r\n\r\nFinally, some objects can be incomplete when first created - either due to their source (partial information provided as part of creating another object) or due to the target only updating on request (pull request mergability is only updated after the first time PR is queried after a new commit is pushed). For these cases, we currently update in place. Do we want to force users to get new instances instead? \r\n\r\nThere's no one right way to do this, but we should look at how to make this behavior consistent across all objects. \r\n\r\nA couple random thought s off hand about this: \r\n* `set*` method naming is misleading - best practice in my understanding is to make `get*` and `set*` methods local and lightweight. Alternative would be to have `update*` methods that actually send updates to the server. \r\n* Create states for the objects and allow the parent objects and the `GitHub` object to create objects in those state. Rather than having updaters for objects, users would get a mutable instance. Possible states for data objects: immutable, immediate mutable, batch mutable. Not sure how the incomplete objects figure into this yet. \r\n\r\n\r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/589/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/589/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/689", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/689/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/689/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/689/events", - "html_url": "https://github.com/hub4j/github-api/issues/689", - "id": 557302663, - "node_id": "MDU6SXNzdWU1NTczMDI2NjM=", - "number": 689, - "title": "Cache corruption fix from #669 not working on Windows", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1686290078, - "node_id": "MDU6TGFiZWwxNjg2MjkwMDc4", - "url": "https://api.github.com/repos/hub4j/github-api/labels/external", - "name": "external", - "color": "a0a0a0", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2020-01-30T06:58:51Z", - "updated_at": "2020-06-07T19:52:27Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "The work around for #669 isn't working on Windows. It appears this may be a bug in Okhttp caching on windows, but it is unclear. https://github.com/github-api/github-api/commit/967512629821b706e8d06ef9b3e57061f397d073", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/689/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/689/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/835", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/835/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/835/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/835/events", - "html_url": "https://github.com/hub4j/github-api/issues/835", - "id": 630566215, - "node_id": "MDU6SXNzdWU2MzA1NjYyMTU=", - "number": 835, - "title": "Add option to take clean snapshots (instead of manual cleaning)", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2020-06-04T07:05:38Z", - "updated_at": "2020-06-06T06:44:33Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "One of the most common scenarios is needing to take a new snapshot for a test. \r\nInstead of making people file the right resources folder, we should make `github.test.takeSnapshot` default to snapshotting in a clean directory and then replacing the existing snapshot files. The current behavior could be moved to `github.test.takeMergedSnapshot` (or some similar name). \r\n\r\nOr allow that value of `github.test.takeSnapshot` to be `merge`? \r\n\r\nThe same should be done with `github.test.useProxy` - it would use only proxy files from a clean directory and we'd add a `github.test.useMergedProxy`. \r\n\r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/835/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/835/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/727", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/727/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/727/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/727/events", - "html_url": "https://github.com/hub4j/github-api/issues/727", - "id": 575738080, - "node_id": "MDU6SXNzdWU1NzU3MzgwODA=", - "number": 727, - "title": "Consider removing @author javadoc, document policy", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - }, - { - "id": 2070644911, - "node_id": "MDU6TGFiZWwyMDcwNjQ0OTEx", - "url": "https://api.github.com/repos/hub4j/github-api/labels/documentation", - "name": "documentation", - "color": "6ee5cb", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 6, - "created_at": "2020-03-04T20:15:52Z", - "updated_at": "2020-05-21T19:55:37Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "I saw a number of projects making the choice to remove `@author` tags from their JavaDocs (https://github.com/checkstyle/checkstyle/issues/5738 for example). \r\n\r\nI thought it was a good choice - this is a collaborative project that has been going for years with over a hundred contributors and very few classes have only one contributor. \r\n\r\nI removed all the `@author` javadoc tags thinking this was not a controversial choice. I didn't even send it through PR. That was wrong to do. \r\n\r\n@PauloMigAlmeida asked that we bring them back and I realized that I had not given the change sufficient consideration. I reverted the change in https://github.com/github-api/github-api/commit/a42305dd59f0be426f0c9091748e947f60d76bcd so that we can discuss and do this right.\r\n\r\nPaulo, could you talk about reasons to keep them? Perhaps we can address your concerns with something other that this particular JavaDoc tag? ", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/727/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/727/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/178", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/178/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/178/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/178/events", - "html_url": "https://github.com/hub4j/github-api/issues/178", - "id": 68225402, - "node_id": "MDU6SXNzdWU2ODIyNTQwMg==", - "number": 178, - "title": "getIssue() from GHPullRequest object", - "user": { - "login": "KostyaSha", - "id": 231611, - "node_id": "MDQ6VXNlcjIzMTYxMQ==", - "avatar_url": "https://avatars.githubusercontent.com/u/231611?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/KostyaSha", - "html_url": "https://github.com/KostyaSha", - "followers_url": "https://api.github.com/users/KostyaSha/followers", - "following_url": "https://api.github.com/users/KostyaSha/following{/other_user}", - "gists_url": "https://api.github.com/users/KostyaSha/gists{/gist_id}", - "starred_url": "https://api.github.com/users/KostyaSha/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/KostyaSha/subscriptions", - "organizations_url": "https://api.github.com/users/KostyaSha/orgs", - "repos_url": "https://api.github.com/users/KostyaSha/repos", - "events_url": "https://api.github.com/users/KostyaSha/events{/privacy}", - "received_events_url": "https://api.github.com/users/KostyaSha/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 6, - "created_at": "2015-04-14T00:18:09Z", - "updated_at": "2020-05-21T00:33:01Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Could such method be added into PR object? Issue and PR content differs and it very inconvenient to do a call through parent like `pr.getRepository().getIssue(pr.getNumber())`\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/178/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/178/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/807", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/807/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/807/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/807/events", - "html_url": "https://github.com/hub4j/github-api/issues/807", - "id": 615125196, - "node_id": "MDU6SXNzdWU2MTUxMjUxOTY=", - "number": 807, - "title": "enterprise apiUrl", - "user": { - "login": "dimmonn", - "id": 6670698, - "node_id": "MDQ6VXNlcjY2NzA2OTg=", - "avatar_url": "https://avatars.githubusercontent.com/u/6670698?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/dimmonn", - "html_url": "https://github.com/dimmonn", - "followers_url": "https://api.github.com/users/dimmonn/followers", - "following_url": "https://api.github.com/users/dimmonn/following{/other_user}", - "gists_url": "https://api.github.com/users/dimmonn/gists{/gist_id}", - "starred_url": "https://api.github.com/users/dimmonn/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/dimmonn/subscriptions", - "organizations_url": "https://api.github.com/users/dimmonn/orgs", - "repos_url": "https://api.github.com/users/dimmonn/repos", - "events_url": "https://api.github.com/users/dimmonn/events{/privacy}", - "received_events_url": "https://api.github.com/users/dimmonn/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 6, - "created_at": "2020-05-09T08:39:12Z", - "updated_at": "2020-05-18T16:39:48Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "`org.kohsuke.github.GitHubBuilder#fromProperties()` as well as `org.kohsuke.github.GitHubBuilder#fromEnvironment()` doesn't support custom apiUrl", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/807/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/807/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/729", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/729/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/729/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/729/events", - "html_url": "https://github.com/hub4j/github-api/issues/729", - "id": 577305635, - "node_id": "MDU6SXNzdWU1NzczMDU2MzU=", - "number": 729, - "title": "NullPointerException when trying to read file-content because encoding is not set", - "user": { - "login": "centic9", - "id": 548322, - "node_id": "MDQ6VXNlcjU0ODMyMg==", - "avatar_url": "https://avatars.githubusercontent.com/u/548322?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/centic9", - "html_url": "https://github.com/centic9", - "followers_url": "https://api.github.com/users/centic9/followers", - "following_url": "https://api.github.com/users/centic9/following{/other_user}", - "gists_url": "https://api.github.com/users/centic9/gists{/gist_id}", - "starred_url": "https://api.github.com/users/centic9/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/centic9/subscriptions", - "organizations_url": "https://api.github.com/users/centic9/orgs", - "repos_url": "https://api.github.com/users/centic9/repos", - "events_url": "https://api.github.com/users/centic9/events{/privacy}", - "received_events_url": "https://api.github.com/users/centic9/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 4, - "created_at": "2020-03-07T09:12:03Z", - "updated_at": "2020-04-21T03:31:46Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nThe test-case below triggers a NullPointerException because since some versions github-api expects \"encoding\" to be set in GHContent always, however it seems sometimes this is not set for some repositories.\r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n1. Run the unit-test below\r\n2. It fails with NullPointerException\r\n\r\n```\r\n @Test\r\n public void testNullPointerException() throws IOException {\r\n GitHub github = GitHub.connect();\r\n\r\n final PagedSearchIterable list = github.searchContent().\r\n repo(\"Savyonify/cryptApiSet/\").\r\n filename(\"build.gradle\").list();\r\n\r\n for(GHContent match : list) {\r\n System.out.println(\"Reading \" + match.getHtmlUrl());\r\n try (final InputStream stream = match.read()) {\r\n assertNotNull(stream);\r\n }\r\n }\r\n }\r\n```\r\n\r\n**Expected behavior**\r\nI would expect to still be able to read those files.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: Linux\r\n - Browser N/A\r\n - Version 1.95, 1.107, 1.108\r\n\r\n**Additional context**\r\nIt seems github now returns some files as part of search-results which are not existing any more, maybe we can handle these more gracefully?\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/729/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/729/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/748", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/748/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/748/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/748/events", - "html_url": "https://github.com/hub4j/github-api/issues/748", - "id": 583197683, - "node_id": "MDU6SXNzdWU1ODMxOTc2ODM=", - "number": 748, - "title": "GHRepository.getLastCommitStatus() reads all statuses to find last status", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2020-03-17T18:01:15Z", - "updated_at": "2020-04-16T18:54:08Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "\r\nhttps://github.com/github-api/github-api/blob/bccae94c7a740fa7ba297fd6eb2a6782ed156a98/src/main/java/org/kohsuke/github/GHRepository.java#L1771-L1774\r\n\r\nThis is fine for a few pages, but bad beyond three pages. \r\n\r\nThis points to a need for `last()`, `first()`, `count()`, and other methods to be added to `PagedIterable` or better `PagedIterator`. ", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/748/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/748/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/788", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/788/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/788/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/788/events", - "html_url": "https://github.com/hub4j/github-api/issues/788", - "id": 600914620, - "node_id": "MDU6SXNzdWU2MDA5MTQ2MjA=", - "number": 788, - "title": "Need support to get \"combined status for a specific ref\"", - "user": { - "login": "prabinB", - "id": 3772520, - "node_id": "MDQ6VXNlcjM3NzI1MjA=", - "avatar_url": "https://avatars.githubusercontent.com/u/3772520?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/prabinB", - "html_url": "https://github.com/prabinB", - "followers_url": "https://api.github.com/users/prabinB/followers", - "following_url": "https://api.github.com/users/prabinB/following{/other_user}", - "gists_url": "https://api.github.com/users/prabinB/gists{/gist_id}", - "starred_url": "https://api.github.com/users/prabinB/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/prabinB/subscriptions", - "organizations_url": "https://api.github.com/users/prabinB/orgs", - "repos_url": "https://api.github.com/users/prabinB/repos", - "events_url": "https://api.github.com/users/prabinB/events{/privacy}", - "received_events_url": "https://api.github.com/users/prabinB/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - }, - { - "id": 1991401619, - "node_id": "MDU6TGFiZWwxOTkxNDAxNjE5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/good%20first%20issue", - "name": "good first issue", - "color": "00FF00", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2020-04-16T10:07:27Z", - "updated_at": "2020-04-16T18:36:25Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Please refer to this githug api - https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref\r\n\r\nCurrently there in the library there is no good way to find the combined status of a ref. I believe support for this end point would be a good use case. ", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/788/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/788/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - } - ] -} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/8-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/8-search_issues.json deleted file mode 100644 index 21593c4e62..0000000000 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/__files/8-search_issues.json +++ /dev/null @@ -1,1218 +0,0 @@ -{ - "total_count": 164, - "incomplete_results": false, - "items": [ - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/772", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/772/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/772/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/772/events", - "html_url": "https://github.com/hub4j/github-api/issues/772", - "id": 593634012, - "node_id": "MDU6SXNzdWU1OTM2MzQwMTI=", - "number": 772, - "title": "GHRepository.getFileContent should give helpful error message when misused", - "user": { - "login": "LorenzNickel", - "id": 29959150, - "node_id": "MDQ6VXNlcjI5OTU5MTUw", - "avatar_url": "https://avatars.githubusercontent.com/u/29959150?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/LorenzNickel", - "html_url": "https://github.com/LorenzNickel", - "followers_url": "https://api.github.com/users/LorenzNickel/followers", - "following_url": "https://api.github.com/users/LorenzNickel/following{/other_user}", - "gists_url": "https://api.github.com/users/LorenzNickel/gists{/gist_id}", - "starred_url": "https://api.github.com/users/LorenzNickel/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/LorenzNickel/subscriptions", - "organizations_url": "https://api.github.com/users/LorenzNickel/orgs", - "repos_url": "https://api.github.com/users/LorenzNickel/repos", - "events_url": "https://api.github.com/users/LorenzNickel/events{/privacy}", - "received_events_url": "https://api.github.com/users/LorenzNickel/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2020-04-03T20:51:52Z", - "updated_at": "2020-04-03T21:13:43Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "# Description\r\nWhen you misuse GHRepository.getFileContent a `com.fasterxml.jackson.databind.exc.MismatchedInputException` is thrown.\r\n\r\n## Reproduce\r\nCreate an authorized instance `Github github` (for example using `new GitHubBuilder().withOAuthToken(token).build();`)\r\n\r\nExecute this:\r\n`gitHub.getRepository(\"github-api/github-api\").getFileContent(\"\");`\r\n\r\nYou should get something like this:\r\n`org.kohsuke.github.HttpException: Server returned HTTP response code: 200, message: '200 OK' for URL: https://api.github.com/repos/github-api/github-api/contents/`\r\n...\r\n`Caused by: java.io.IOException: Failed to deserialize`\r\n...\r\n`Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of 'org.kohsuke.github.GHContent' out of START_ARRAY token\r\n at`\r\n...\r\n\r\n## Fix\r\nPlease throw a a proper exception or redesign your implementation to avoid such errors.\r\n\r\n---\r\n\r\nI'd be really happy if you could fix this, please keep up your great work!", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/772/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/772/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/766", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/766/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/766/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/766/events", - "html_url": "https://github.com/hub4j/github-api/issues/766", - "id": 591464899, - "node_id": "MDU6SXNzdWU1OTE0NjQ4OTk=", - "number": 766, - "title": "Replace `GHCreateRepositoryBuilder`", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - }, - { - "id": 1780165359, - "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", - "name": "breaking change", - "color": "b60205", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2020-03-31T22:08:09Z", - "updated_at": "2020-03-31T22:08:09Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Rename `GHCreateRepositoryBuilder`to `GHRepositoryBuilder`, or perhaps even `GHRepository.Creator` ", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/766/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/766/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/749", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/749/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/749/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/749/events", - "html_url": "https://github.com/hub4j/github-api/issues/749", - "id": 583217841, - "node_id": "MDU6SXNzdWU1ODMyMTc4NDE=", - "number": 749, - "title": "PagedSearchIterable relies on cached result", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2020-03-17T18:35:53Z", - "updated_at": "2020-03-17T19:43:17Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "The `populate()` method depends on `adapt()`. The Iterator created in `adapt()` loads a result, but never refreshes it: \r\nhttps://github.com/github-api/github-api/blob/bccae94c7a740fa7ba297fd6eb2a6782ed156a98/src/main/java/org/kohsuke/github/PagedSearchIterable.java#L91-L93\r\n\r\nThis means that the `getTotalCount()` can become out of sync from iterators or actual search results.\r\n\r\nhttps://github.com/github-api/github-api/blob/bccae94c7a740fa7ba297fd6eb2a6782ed156a98/src/main/java/org/kohsuke/github/PagedSearchIterable.java#L48-L50\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/749/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/749/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/445", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/445/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/445/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/445/events", - "html_url": "https://github.com/hub4j/github-api/issues/445", - "id": 338893171, - "node_id": "MDU6SXNzdWUzMzg4OTMxNzE=", - "number": 445, - "title": "No API for getting the createdAt and updatedAt for GHContent", - "user": { - "login": "umesh9794", - "id": 7439619, - "node_id": "MDQ6VXNlcjc0Mzk2MTk=", - "avatar_url": "https://avatars.githubusercontent.com/u/7439619?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/umesh9794", - "html_url": "https://github.com/umesh9794", - "followers_url": "https://api.github.com/users/umesh9794/followers", - "following_url": "https://api.github.com/users/umesh9794/following{/other_user}", - "gists_url": "https://api.github.com/users/umesh9794/gists{/gist_id}", - "starred_url": "https://api.github.com/users/umesh9794/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/umesh9794/subscriptions", - "organizations_url": "https://api.github.com/users/umesh9794/orgs", - "repos_url": "https://api.github.com/users/umesh9794/repos", - "events_url": "https://api.github.com/users/umesh9794/events{/privacy}", - "received_events_url": "https://api.github.com/users/umesh9794/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2018-07-06T10:45:18Z", - "updated_at": "2020-03-06T02:28:14Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "This is more like a feature request rether an issue. \r\n\r\n`GHContent` has no methods to expose the `createdAt` and `updatedAt` for a file content. I can understand its bit cumbersome to get these details but how about exposing the commit history from where we can get the first and latest commit timestamps? ", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/445/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/445/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/599", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/599/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/599/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/599/events", - "html_url": "https://github.com/hub4j/github-api/issues/599", - "id": 519749895, - "node_id": "MDU6SXNzdWU1MTk3NDk4OTU=", - "number": 599, - "title": "Replace `wrapUp` and `wrap()` methods with `@JacksonInject`", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 2, - "created_at": "2019-11-08T04:59:33Z", - "updated_at": "2020-03-06T02:21:51Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "This is very much a code smells issue, not a user facing feature. \r\n\r\nThere's quite a bit of code and complexity devoted to added `root` references to objects after they are received. I've thought about various class structures to clean the up, but really the right thing to do seems to be using the `@JacksonInject` annotation. We'd add the `root` instance to the mapper when reading and let the injector handle the assignment. \r\n\r\nSee https://fasterxml.github.io/jackson-databind/javadoc/2.9/com/fasterxml/jackson/databind/ObjectMapper.html#reader-com.fasterxml.jackson.databind.InjectableValues-\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/599/reactions", - "total_count": 1, - "+1": 1, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/599/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/699", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/699/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/699/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/699/events", - "html_url": "https://github.com/hub4j/github-api/issues/699", - "id": 566052912, - "node_id": "MDU6SXNzdWU1NjYwNTI5MTI=", - "number": 699, - "title": "Remove any unneeded `with` methods from `Requester`", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2020-02-17T04:45:34Z", - "updated_at": "2020-02-23T03:17:33Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "From https://github.com/github-api/github-api/pull/697#discussion_r379932880\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/699/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/699/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/700", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/700/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/700/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/700/events", - "html_url": "https://github.com/hub4j/github-api/issues/700", - "id": 566056369, - "node_id": "MDU6SXNzdWU1NjYwNTYzNjk=", - "number": 700, - "title": "Finish moving all full URL setting to `setRawUrlPath` and change `withUrlPath` to not require starting `/`", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2020-02-17T04:58:21Z", - "updated_at": "2020-02-21T23:57:37Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "https://github.com/github-api/github-api/pull/697#discussion_r379982558\r\n\r\nThis will require looking at each call to `withUrlPath` to determine if it is passing a tail URL (starting with \"/\") or passing a full url (starting with `http`). \r\n\r\nOh, look here's one: \r\nhttps://github.com/github-api/github-api/blob/ff3136df7069d22d937daa8f2cddc357c777e07e/src/main/java/org/kohsuke/github/GHBranch.java#L104\r\n\r\nThere more in that class as well, but there are no tests for a number of those methods. \r\n\r\nSo, each case of this needs a test written to show it works and then change to use `setRawUrlPath`. Finally, when we should block `withUrlPath` from accepting full urls. ", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/700/reactions", - "total_count": 2, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 2, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/700/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/702", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/702/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/702/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/702/events", - "html_url": "https://github.com/hub4j/github-api/issues/702", - "id": 566517856, - "node_id": "MDU6SXNzdWU1NjY1MTc4NTY=", - "number": 702, - "title": "Rename `PagedIterable` and `PagedIterator` to `PageContentsIterable` and `PageContentsIterator`", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - }, - { - "id": 1780165359, - "node_id": "MDU6TGFiZWwxNzgwMTY1MzU5", - "url": "https://api.github.com/repos/hub4j/github-api/labels/breaking%20change", - "name": "breaking change", - "color": "b60205", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2020-02-17T21:07:31Z", - "updated_at": "2020-02-17T21:09:48Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "This can be partially completed in a non-breaking way by moving the implementation to `PageContentsIterable` and having `PagedIterable` inherit from it. But ultimately it will require API changes. ", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/702/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/702/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/681", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/681/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/681/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/681/events", - "html_url": "https://github.com/hub4j/github-api/issues/681", - "id": 555087416, - "node_id": "MDU6SXNzdWU1NTUwODc0MTY=", - "number": 681, - "title": "GHPullRequest for more than one Repo", - "user": { - "login": "namanbada0606", - "id": 49596631, - "node_id": "MDQ6VXNlcjQ5NTk2NjMx", - "avatar_url": "https://avatars.githubusercontent.com/u/49596631?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/namanbada0606", - "html_url": "https://github.com/namanbada0606", - "followers_url": "https://api.github.com/users/namanbada0606/followers", - "following_url": "https://api.github.com/users/namanbada0606/following{/other_user}", - "gists_url": "https://api.github.com/users/namanbada0606/gists{/gist_id}", - "starred_url": "https://api.github.com/users/namanbada0606/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/namanbada0606/subscriptions", - "organizations_url": "https://api.github.com/users/namanbada0606/orgs", - "repos_url": "https://api.github.com/users/namanbada0606/repos", - "events_url": "https://api.github.com/users/namanbada0606/events{/privacy}", - "received_events_url": "https://api.github.com/users/namanbada0606/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 6, - "created_at": "2020-01-25T13:47:20Z", - "updated_at": "2020-01-28T20:48:40Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "**Describe the bug**\r\nFirstly wanted to say BIG THANK YOU for this great library, it's really my team a big way. \r\n\r\nContext:\r\nClass GHPullRequest currently handles for one repo to pull PR, how do I leverage the same for more than one repo? Is this a currently limited to ONE ? \r\n\r\n**To Reproduce**\r\nSteps to reproduce the behavior:\r\n\r\nclone https://github.com/sebkur/github-cli\r\n\r\n./gradlew clean create\r\n\r\n./scripts/hubcli list-pull-requests \r\n\r\n\r\n\r\n**Expected behavior**\r\nWe should require more than one repo\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: MAC\r\n - Browser CHROME\r\n - Version 73\r\n\r\n\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/681/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/681/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/668", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/668/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/668/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/668/events", - "html_url": "https://github.com/hub4j/github-api/issues/668", - "id": 551035485, - "node_id": "MDU6SXNzdWU1NTEwMzU0ODU=", - "number": 668, - "title": "Check performance and behavior of ReflectionToStringBuilder ", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1664647346, - "node_id": "MDU6TGFiZWwxNjY0NjQ3MzQ2", - "url": "https://api.github.com/repos/hub4j/github-api/labels/task", - "name": "task", - "color": "bfdadc", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2020-01-16T20:26:10Z", - "updated_at": "2020-01-16T20:26:10Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/668/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/668/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/632", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/632/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/632/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/632/events", - "html_url": "https://github.com/hub4j/github-api/issues/632", - "id": 532081873, - "node_id": "MDU6SXNzdWU1MzIwODE4NzM=", - "number": 632, - "title": "Branch Protection Pattern", - "user": { - "login": "inidona", - "id": 2903923, - "node_id": "MDQ6VXNlcjI5MDM5MjM=", - "avatar_url": "https://avatars.githubusercontent.com/u/2903923?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/inidona", - "html_url": "https://github.com/inidona", - "followers_url": "https://api.github.com/users/inidona/followers", - "following_url": "https://api.github.com/users/inidona/following{/other_user}", - "gists_url": "https://api.github.com/users/inidona/gists{/gist_id}", - "starred_url": "https://api.github.com/users/inidona/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/inidona/subscriptions", - "organizations_url": "https://api.github.com/users/inidona/orgs", - "repos_url": "https://api.github.com/users/inidona/repos", - "events_url": "https://api.github.com/users/inidona/events{/privacy}", - "received_events_url": "https://api.github.com/users/inidona/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2019-12-03T15:51:10Z", - "updated_at": "2019-12-03T16:05:47Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "In GitHub UI i can create an Branch Protection with an Pattern.\r\nSo the branches not exists in this moment in the repo and will be protected after it created.\r\n\r\ni studied your api but found only the protection of real existing branches.\r\n\r\ni am right, and if is it possible to enhance the api ? Mayby with an String contructor in GHBranchProtectionBuilder ?\r\n\r\nthanks\r\nandreas", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/632/reactions", - "total_count": 2, - "+1": 2, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/632/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/495", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/495/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/495/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/495/events", - "html_url": "https://github.com/hub4j/github-api/issues/495", - "id": 409299090, - "node_id": "MDU6SXNzdWU0MDkyOTkwOTA=", - "number": 495, - "title": "Unable to replace a label in an issue because GHIssue.labels list is not updated", - "user": { - "login": "rmetzger", - "id": 89049, - "node_id": "MDQ6VXNlcjg5MDQ5", - "avatar_url": "https://avatars.githubusercontent.com/u/89049?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/rmetzger", - "html_url": "https://github.com/rmetzger", - "followers_url": "https://api.github.com/users/rmetzger/followers", - "following_url": "https://api.github.com/users/rmetzger/following{/other_user}", - "gists_url": "https://api.github.com/users/rmetzger/gists{/gist_id}", - "starred_url": "https://api.github.com/users/rmetzger/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/rmetzger/subscriptions", - "organizations_url": "https://api.github.com/users/rmetzger/orgs", - "repos_url": "https://api.github.com/users/rmetzger/repos", - "events_url": "https://api.github.com/users/rmetzger/events{/privacy}", - "received_events_url": "https://api.github.com/users/rmetzger/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - }, - { - "id": 265902955, - "node_id": "MDU6TGFiZWwyNjU5MDI5NTU=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/new%20feature", - "name": "new feature", - "color": "f4cc53", - "default": false, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2019-02-12T13:31:27Z", - "updated_at": "2019-11-07T23:17:02Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Consider the following code:\r\n\r\n```java\r\nGHRepository repo = gitHub.getRepository(\"myacc/myrepo\");\r\nGHIssue issue = repo.getIssue(4);\r\n// assume \"test\" exists\r\nissue.removeLabels(\"test\");\r\nissue.addLabels(\"test1\");\r\n```\r\n\r\nExpected result: Issue `#4` has one label: `test1`\r\nActual result: Issue `#4` has two labels: `test`, `test1`\r\n\r\nCause:\r\nIn `GHIssue`, the `labels` field is not updated when the `setLabels(String... labels)` method is called. `addLabels(\"test1\")` calls `getLabels()` in `_addLabels()`, which returns the cached `GHIssue.list` field, still containing the `test` label.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/495/reactions", - "total_count": 2, - "+1": 2, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/495/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/440", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/440/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/440/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/440/events", - "html_url": "https://github.com/hub4j/github-api/issues/440", - "id": 330763806, - "node_id": "MDU6SXNzdWUzMzA3NjM4MDY=", - "number": 440, - "title": "Unable to add user as contributor in organization repository", - "user": { - "login": "ncoop57", - "id": 7613470, - "node_id": "MDQ6VXNlcjc2MTM0NzA=", - "avatar_url": "https://avatars.githubusercontent.com/u/7613470?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/ncoop57", - "html_url": "https://github.com/ncoop57", - "followers_url": "https://api.github.com/users/ncoop57/followers", - "following_url": "https://api.github.com/users/ncoop57/following{/other_user}", - "gists_url": "https://api.github.com/users/ncoop57/gists{/gist_id}", - "starred_url": "https://api.github.com/users/ncoop57/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/ncoop57/subscriptions", - "organizations_url": "https://api.github.com/users/ncoop57/orgs", - "repos_url": "https://api.github.com/users/ncoop57/repos", - "events_url": "https://api.github.com/users/ncoop57/events{/privacy}", - "received_events_url": "https://api.github.com/users/ncoop57/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 265902919, - "node_id": "MDU6TGFiZWwyNjU5MDI5MTk=", - "url": "https://api.github.com/repos/hub4j/github-api/labels/bug", - "name": "bug", - "color": "e11d21", - "default": true, - "description": null - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2018-06-08T18:43:54Z", - "updated_at": "2019-11-07T23:00:54Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "Hi, I asked a question like this on stack overflow which you can find [here](https://stackoverflow.com/questions/50633315/how-do-you-add-outside-collaborators-to-repositories-in-your-organization-using), but had no luck with anyone answering it, so, I thought I'd bring my question here.\r\n\r\nI am trying to add a special user to all repositories in an organization automatically as a contributor, not a team. It must be a contributor because I have a separate program that automatically accepts repository invites but does not work with team invites so I need a solution that does it as a contributor not a team. When I attempt this with the following code:\r\n\r\n`GHCreateRepositoryBuilder builder = this.organization.createRepository(this.prefix + i);\r\nGHRepository repo = builder.create();\r\nrepo.addCollaborators(github.getUser(\"vcdep\"));\r\nrepositories.add(repo);`\r\n\r\nI get the following error:\r\n\r\n`Caused by: java.io.IOException: Operation not applicable to a repository owned by someone else: TestOrganizationForDevOps\r\nat org.kohsuke.github.GHRepository.verifyMine(GHRepository.java:1097)\r\nat org.kohsuke.github.GHRepository.modifyCollaborators(GHRepository.java:507)\r\nat org.kohsuke.github.GHRepository.addCollaborators(GHRepository.java:495)\r\nat org.kohsuke.github.GHRepository.addCollaborators(GHRepository.java:491)\r\nat wizard.GitHubController.createRepos(GitHubController.java:94)\r\nat wizard.Controller.onButtonClickedFinish(Controller.java:260)\r\n... 58 more`\r\n\r\nI am using a personal token which has all of the permissions given to it and I am using the account which owns and created the organization along with the repositories, however, I am still getting that error. I even tried adding the user as a member to the organization, but even that didn't work.\r\n\r\nI guess what I am really wondering is if this is expected behavior or if there is something I am missing and if so what is the solution.\r\n\r\nThank you for your time and consideration.", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/440/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/440/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/577", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/577/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/577/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/577/events", - "html_url": "https://github.com/hub4j/github-api/issues/577", - "id": 513638744, - "node_id": "MDU6SXNzdWU1MTM2Mzg3NDQ=", - "number": 577, - "title": "Add getById() method to PagedIterable", - "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 1662551322, - "node_id": "MDU6TGFiZWwxNjYyNTUxMzIy", - "url": "https://api.github.com/repos/hub4j/github-api/labels/enhancement", - "name": "enhancement", - "color": "0e8a16", - "default": true, - "description": "" - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2019-10-29T01:16:40Z", - "updated_at": "2019-11-07T22:48:43Z", - "closed_at": null, - "author_association": "MEMBER", - "type": null, - "active_lock_reason": null, - "sub_issues_summary": { - "total": 0, - "completed": 0, - "percent_completed": 0 - }, - "issue_dependencies_summary": { - "blocked_by": 0, - "total_blocked_by": 0, - "blocking": 0, - "total_blocking": 0 - }, - "body": "There are a large number cases where an iterable API endpoint also offers query options for the same url or adding an id to the end of the URL to get an individual (see Collaborators - #576). It seems like it would be better to have a consistent way of accessing this kind of endpoint when it exists. ", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/577/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/577/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - } - ] -} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/1-user.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/1-user.json index 4421d0aed2..acb861f081 100644 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/1-user.json +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/1-user.json @@ -1,5 +1,5 @@ { - "id": "00e67418-a035-401d-b3d3-457fc73ffd0c", + "id": "fcc027dc-1763-4fc2-8537-10be7501b306", "name": "user", "request": { "url": "/user", @@ -14,7 +14,7 @@ "status": 200, "bodyFileName": "1-user.json", "headers": { - "Date": "Sun, 25 Jan 2026 19:36:34 GMT", + "Date": "Tue, 10 Feb 2026 20:14:50 GMT", "Content-Type": "application/json; charset=utf-8", "Cache-Control": "private, max-age=60, s-maxage=60", "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", @@ -35,14 +35,14 @@ "Content-Security-Policy": "default-src 'none'", "Server": "github.com", "X-RateLimit-Limit": "5000", - "X-RateLimit-Remaining": "4976", - "X-RateLimit-Reset": "1769372833", - "X-RateLimit-Used": "24", + "X-RateLimit-Remaining": "4905", + "X-RateLimit-Reset": "1770755531", + "X-RateLimit-Used": "95", "X-RateLimit-Resource": "core", - "X-GitHub-Request-Id": "F6F4:EDA44:64803E0:55D240F:697670C1" + "X-GitHub-Request-Id": "FC8F:31B50A:A0F14CA:959A082:698B91B9" } }, - "uuid": "00e67418-a035-401d-b3d3-457fc73ffd0c", + "uuid": "fcc027dc-1763-4fc2-8537-10be7501b306", "persistent": true, "insertionIndex": 1 } \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/2-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/2-search_issues.json index 7709503660..01e9ad04ab 100644 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/2-search_issues.json +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/2-search_issues.json @@ -1,8 +1,8 @@ { - "id": "09a5cfec-10dd-450e-bc93-7733e3901b45", + "id": "02b59382-023b-4a4c-976d-a1f5dc88c747", "name": "search_issues", "request": { - "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aopen", + "url": "/search/issues?sort=created&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aclosed", "method": "GET", "headers": { "Accept": { @@ -14,7 +14,7 @@ "status": 200, "bodyFileName": "2-search_issues.json", "headers": { - "Date": "Sun, 25 Jan 2026 19:36:35 GMT", + "Date": "Tue, 10 Feb 2026 20:14:51 GMT", "Content-Type": "application/json; charset=utf-8", "Cache-Control": "no-cache", "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", @@ -24,9 +24,9 @@ "X-GitHub-Media-Type": "github.v3; format=json", "x-github-api-version-selected": "2022-11-28", "X-RateLimit-Limit": "30", - "X-RateLimit-Remaining": "29", - "X-RateLimit-Reset": "1769369855", - "X-RateLimit-Used": "1", + "X-RateLimit-Remaining": "27", + "X-RateLimit-Reset": "1770754529", + "X-RateLimit-Used": "3", "X-RateLimit-Resource": "search", "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", "Access-Control-Allow-Origin": "*", @@ -37,11 +37,11 @@ "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", "Content-Security-Policy": "default-src 'none'", "Server": "github.com", - "X-GitHub-Request-Id": "F6F6:1DC7F0:634116F:547C64E:697670C2", - "Link": "; rel=\"next\", ; rel=\"last\"" + "X-GitHub-Request-Id": "FC91:2EFE2C:A1558AD:9585268:698B91BA", + "Link": "; rel=\"next\", ; rel=\"last\"" } }, - "uuid": "09a5cfec-10dd-450e-bc93-7733e3901b45", + "uuid": "02b59382-023b-4a4c-976d-a1f5dc88c747", "persistent": true, "scenarioName": "scenario-1-search-issues", "requiredScenarioState": "Started", diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/3-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/3-search_issues.json index 9424b7c0b2..8f53581075 100644 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/3-search_issues.json +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/3-search_issues.json @@ -1,8 +1,8 @@ { - "id": "d4bbc619-a33f-41de-8d54-006f338708b3", + "id": "ccfa0439-0837-4599-a44e-9ca76d1b0328", "name": "search_issues", "request": { - "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aopen", + "url": "/search/issues?sort=created&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aclosed", "method": "GET", "headers": { "Accept": { @@ -14,7 +14,7 @@ "status": 200, "bodyFileName": "3-search_issues.json", "headers": { - "Date": "Sun, 25 Jan 2026 19:36:35 GMT", + "Date": "Tue, 10 Feb 2026 20:14:52 GMT", "Content-Type": "application/json; charset=utf-8", "Cache-Control": "no-cache", "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", @@ -24,9 +24,9 @@ "X-GitHub-Media-Type": "github.v3; format=json", "x-github-api-version-selected": "2022-11-28", "X-RateLimit-Limit": "30", - "X-RateLimit-Remaining": "28", - "X-RateLimit-Reset": "1769369855", - "X-RateLimit-Used": "2", + "X-RateLimit-Remaining": "26", + "X-RateLimit-Reset": "1770754529", + "X-RateLimit-Used": "4", "X-RateLimit-Resource": "search", "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", "Access-Control-Allow-Origin": "*", @@ -37,11 +37,11 @@ "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", "Content-Security-Policy": "default-src 'none'", "Server": "github.com", - "X-GitHub-Request-Id": "F6F7:46DF2:72F8216:643EB99:697670C3", - "Link": "; rel=\"next\", ; rel=\"last\"" + "X-GitHub-Request-Id": "FC92:3085FD:A017065:94A6FBB:698B91BB", + "Link": "; rel=\"next\", ; rel=\"last\"" } }, - "uuid": "d4bbc619-a33f-41de-8d54-006f338708b3", + "uuid": "ccfa0439-0837-4599-a44e-9ca76d1b0328", "persistent": true, "scenarioName": "scenario-1-search-issues", "requiredScenarioState": "scenario-1-search-issues-2", diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/4-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/4-search_issues.json deleted file mode 100644 index 8daf131dca..0000000000 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/4-search_issues.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "id": "c077f6a2-96b2-4dcb-8bc6-b41912fcab66", - "name": "search_issues", - "request": { - "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aopen&page=2", - "method": "GET", - "headers": { - "Accept": { - "equalTo": "application/vnd.github+json" - } - } - }, - "response": { - "status": 200, - "bodyFileName": "4-search_issues.json", - "headers": { - "Date": "Sun, 25 Jan 2026 19:36:36 GMT", - "Content-Type": "application/json; charset=utf-8", - "Cache-Control": "no-cache", - "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", - "X-OAuth-Scopes": "repo", - "X-Accepted-OAuth-Scopes": "", - "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", - "X-GitHub-Media-Type": "github.v3; format=json", - "x-github-api-version-selected": "2022-11-28", - "X-RateLimit-Limit": "30", - "X-RateLimit-Remaining": "27", - "X-RateLimit-Reset": "1769369855", - "X-RateLimit-Used": "3", - "X-RateLimit-Resource": "search", - "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", - "Access-Control-Allow-Origin": "*", - "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", - "X-Frame-Options": "deny", - "X-Content-Type-Options": "nosniff", - "X-XSS-Protection": "0", - "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", - "Content-Security-Policy": "default-src 'none'", - "Server": "github.com", - "X-GitHub-Request-Id": "F6F8:1EE296:6025D5B:51B5929:697670C4", - "Link": "; rel=\"prev\", ; rel=\"next\", ; rel=\"last\", ; rel=\"first\"" - } - }, - "uuid": "c077f6a2-96b2-4dcb-8bc6-b41912fcab66", - "persistent": true, - "insertionIndex": 4 -} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/5-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/5-search_issues.json deleted file mode 100644 index bf0fddb7d7..0000000000 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/5-search_issues.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "id": "a96ac4a9-7011-42d8-ad31-8c9127180a1f", - "name": "search_issues", - "request": { - "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aopen&page=3", - "method": "GET", - "headers": { - "Accept": { - "equalTo": "application/vnd.github+json" - } - } - }, - "response": { - "status": 200, - "bodyFileName": "5-search_issues.json", - "headers": { - "Date": "Sun, 25 Jan 2026 19:36:37 GMT", - "Content-Type": "application/json; charset=utf-8", - "Cache-Control": "no-cache", - "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", - "X-OAuth-Scopes": "repo", - "X-Accepted-OAuth-Scopes": "", - "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", - "X-GitHub-Media-Type": "github.v3; format=json", - "x-github-api-version-selected": "2022-11-28", - "X-RateLimit-Limit": "30", - "X-RateLimit-Remaining": "26", - "X-RateLimit-Reset": "1769369855", - "X-RateLimit-Used": "4", - "X-RateLimit-Resource": "search", - "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", - "Access-Control-Allow-Origin": "*", - "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", - "X-Frame-Options": "deny", - "X-Content-Type-Options": "nosniff", - "X-XSS-Protection": "0", - "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", - "Content-Security-Policy": "default-src 'none'", - "Server": "github.com", - "X-GitHub-Request-Id": "F6F9:46DF2:72F8B03:643F337:697670C5", - "Link": "; rel=\"prev\", ; rel=\"next\", ; rel=\"last\", ; rel=\"first\"" - } - }, - "uuid": "a96ac4a9-7011-42d8-ad31-8c9127180a1f", - "persistent": true, - "insertionIndex": 5 -} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/6-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/6-search_issues.json deleted file mode 100644 index 499e2e3430..0000000000 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/6-search_issues.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "id": "47d78700-be83-47c9-8fee-d2bbc1d4b878", - "name": "search_issues", - "request": { - "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aopen&page=4", - "method": "GET", - "headers": { - "Accept": { - "equalTo": "application/vnd.github+json" - } - } - }, - "response": { - "status": 200, - "bodyFileName": "6-search_issues.json", - "headers": { - "Date": "Sun, 25 Jan 2026 19:36:38 GMT", - "Content-Type": "application/json; charset=utf-8", - "Cache-Control": "no-cache", - "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", - "X-OAuth-Scopes": "repo", - "X-Accepted-OAuth-Scopes": "", - "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", - "X-GitHub-Media-Type": "github.v3; format=json", - "x-github-api-version-selected": "2022-11-28", - "X-RateLimit-Limit": "30", - "X-RateLimit-Remaining": "25", - "X-RateLimit-Reset": "1769369855", - "X-RateLimit-Used": "5", - "X-RateLimit-Resource": "search", - "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", - "Access-Control-Allow-Origin": "*", - "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", - "X-Frame-Options": "deny", - "X-Content-Type-Options": "nosniff", - "X-XSS-Protection": "0", - "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", - "Content-Security-Policy": "default-src 'none'", - "Server": "github.com", - "X-GitHub-Request-Id": "F6FA:25DA4D:607698C:51F2ADF:697670C6", - "Link": "; rel=\"prev\", ; rel=\"next\", ; rel=\"last\", ; rel=\"first\"" - } - }, - "uuid": "47d78700-be83-47c9-8fee-d2bbc1d4b878", - "persistent": true, - "insertionIndex": 6 -} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/7-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/7-search_issues.json deleted file mode 100644 index 3e2dbb362d..0000000000 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/7-search_issues.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "id": "6fe37716-effc-487e-b7c1-44773e91935f", - "name": "search_issues", - "request": { - "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aopen&page=5", - "method": "GET", - "headers": { - "Accept": { - "equalTo": "application/vnd.github+json" - } - } - }, - "response": { - "status": 200, - "bodyFileName": "7-search_issues.json", - "headers": { - "Date": "Sun, 25 Jan 2026 19:36:39 GMT", - "Content-Type": "application/json; charset=utf-8", - "Cache-Control": "no-cache", - "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", - "X-OAuth-Scopes": "repo", - "X-Accepted-OAuth-Scopes": "", - "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", - "X-GitHub-Media-Type": "github.v3; format=json", - "x-github-api-version-selected": "2022-11-28", - "X-RateLimit-Limit": "30", - "X-RateLimit-Remaining": "24", - "X-RateLimit-Reset": "1769369855", - "X-RateLimit-Used": "6", - "X-RateLimit-Resource": "search", - "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", - "Access-Control-Allow-Origin": "*", - "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", - "X-Frame-Options": "deny", - "X-Content-Type-Options": "nosniff", - "X-XSS-Protection": "0", - "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", - "Content-Security-Policy": "default-src 'none'", - "Server": "github.com", - "X-GitHub-Request-Id": "F6FC:11A506:6459E58:5584095:697670C6", - "Link": "; rel=\"prev\", ; rel=\"next\", ; rel=\"last\", ; rel=\"first\"" - } - }, - "uuid": "6fe37716-effc-487e-b7c1-44773e91935f", - "persistent": true, - "insertionIndex": 7 -} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/8-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/8-search_issues.json deleted file mode 100644 index ad9d210802..0000000000 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchIssuesOnly/mappings/8-search_issues.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "id": "fde8ed37-9d69-4220-9377-deed5fbf3d11", - "name": "search_issues", - "request": { - "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Aissue+is%3Aopen&page=6", - "method": "GET", - "headers": { - "Accept": { - "equalTo": "application/vnd.github+json" - } - } - }, - "response": { - "status": 200, - "bodyFileName": "8-search_issues.json", - "headers": { - "Date": "Sun, 25 Jan 2026 19:36:40 GMT", - "Content-Type": "application/json; charset=utf-8", - "Cache-Control": "no-cache", - "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", - "X-OAuth-Scopes": "repo", - "X-Accepted-OAuth-Scopes": "", - "github-authentication-token-expiration": "2026-02-19 19:55:13 UTC", - "X-GitHub-Media-Type": "github.v3; format=json", - "x-github-api-version-selected": "2022-11-28", - "X-RateLimit-Limit": "30", - "X-RateLimit-Remaining": "23", - "X-RateLimit-Reset": "1769369855", - "X-RateLimit-Used": "7", - "X-RateLimit-Resource": "search", - "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", - "Access-Control-Allow-Origin": "*", - "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", - "X-Frame-Options": "deny", - "X-Content-Type-Options": "nosniff", - "X-XSS-Protection": "0", - "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", - "Content-Security-Policy": "default-src 'none'", - "Server": "github.com", - "X-GitHub-Request-Id": "F6FD:275471:6312BA7:544A3C3:697670C7", - "Link": "; rel=\"prev\", ; rel=\"first\"" - } - }, - "uuid": "fde8ed37-9d69-4220-9377-deed5fbf3d11", - "persistent": true, - "insertionIndex": 8 -} \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/2-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/2-search_issues.json index 63a6d51e2d..bdce10bd5b 100644 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/2-search_issues.json +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/2-search_issues.json @@ -1,7 +1,258 @@ { - "total_count": 16, + "total_count": 1370, "incomplete_results": false, "items": [ + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2193", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2193/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2193/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2193/events", + "html_url": "https://github.com/hub4j/github-api/pull/2193", + "id": 3880789387, + "node_id": "PR_kwDOAAlq-s7ApqDL", + "number": 2193, + "title": "Chore(deps): Bump org.jacoco:jacoco-maven-plugin from 0.8.13 to 0.8.14", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-02-01T02:02:49Z", + "updated_at": "2026-02-10T07:47:33Z", + "closed_at": "2026-02-10T07:47:20Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2193", + "html_url": "https://github.com/hub4j/github-api/pull/2193", + "diff_url": "https://github.com/hub4j/github-api/pull/2193.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2193.patch", + "merged_at": "2026-02-10T07:47:19Z" + }, + "body": "Bumps [org.jacoco:jacoco-maven-plugin](https://github.com/jacoco/jacoco) from 0.8.13 to 0.8.14.\n
\nRelease notes\n

Sourced from org.jacoco:jacoco-maven-plugin's releases.

\n
\n

0.8.14

\n

New Features

\n
    \n
  • JaCoCo now officially supports Java 25 (GitHub #1950).
  • \n
  • Experimental support for Java 26 class files (GitHub #1870).
  • \n
  • Branches added by the Kotlin compiler for default argument number 33 or higher are filtered out during generation of report (GitHub #1655).
  • \n
  • Part of bytecode generated by the Kotlin compiler for elvis operator that follows safe call operator is filtered out during generation of report (GitHub #1814, #1954).
  • \n
  • Part of bytecode generated by the Kotlin compiler for more cases of chained safe call operators is filtered out during generation of report (GitHub #1956).
  • \n
  • Part of bytecode generated by the Kotlin compiler for invocations of suspendCoroutineUninterceptedOrReturn intrinsic is filtered out during generation of report (GitHub #1929).
  • \n
  • Part of bytecode generated by the Kotlin compiler for suspending lambdas with parameters is filtered out during generation of report (GitHub #1945).
  • \n
  • Part of bytecode generated by the Kotlin compiler for suspending functions and lambdas with suspension points that return inline value class is filtered out during generation of report (GitHub #1871).
  • \n
  • Part of bytecode generated by the Kotlin Compose compiler plugin for pausable composition is filtered out during generation of report (GitHub #1911).
  • \n
  • Methods generated by the Kotlin serialization compiler plugin are filtered out (GitHub #1885, #1970, #1971).
  • \n
\n

Fixed bugs

\n
    \n
  • Fixed handling of implicit else clause of when with String subject in Kotlin (GitHub #1813, #1940).
  • \n
  • Fixed handling of implicit default clause of switch by String in Java when compiled by ECJ (GitHub #1813, #1940).\nFixed handling of exceptions in chains of safe call operators in Kotlin (GitHub #1819).
  • \n
\n

Non-functional Changes

\n
    \n
  • JaCoCo now depends on ASM 9.9 (GitHub #1965).
  • \n
\n
\n
\n
\nCommits\n
    \n
  • 2eb2483 Prepare release v0.8.14
  • \n
  • de76181 KotlinSerializableFilter should filter more methods (#1971)
  • \n
  • 89c4bd5 Fix NPE in KotlinSerializableFilter (#1970)
  • \n
  • 0981128 Migrate release staging to the Central Publisher Portal (#1968)
  • \n
  • d07bc6b Add filter for bytecode generated by Kotlin serialization compiler plugin (#1...
  • \n
  • 5e35fd5 Upgrade maven-dependency-plugin to 3.9.0 (#1966)
  • \n
  • c2fe5cc Upgrade ASM to 9.9 (#1965)
  • \n
  • b0f8e23 KotlinSafeCallOperatorFilter should filter "unoptimized" safe call followed b...
  • \n
  • c7bd3f4 Upgrade spotless-maven-plugin to 3.0.0 (#1961)
  • \n
  • faa289d KotlinSafeCallOperatorFilter should not be affected by presence of pseudo ins...
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.jacoco:jacoco-maven-plugin&package-manager=maven&previous-version=0.8.13&new-version=0.8.14)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2193/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2193/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2191", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2191/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2191/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2191/events", + "html_url": "https://github.com/hub4j/github-api/pull/2191", + "id": 3880788559, + "node_id": "PR_kwDOAAlq-s7App3r", + "number": 2191, + "title": "Chore(deps): Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.7 to 3.2.8", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-02-01T02:02:28Z", + "updated_at": "2026-02-10T07:48:12Z", + "closed_at": "2026-02-10T07:48:04Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2191", + "html_url": "https://github.com/hub4j/github-api/pull/2191", + "diff_url": "https://github.com/hub4j/github-api/pull/2191.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2191.patch", + "merged_at": "2026-02-10T07:48:04Z" + }, + "body": "Bumps [org.apache.maven.plugins:maven-gpg-plugin](https://github.com/apache/maven-gpg-plugin) from 3.2.7 to 3.2.8.\n
\nRelease notes\n

Sourced from org.apache.maven.plugins:maven-gpg-plugin's releases.

\n
\n

3.2.8

\n\n

🐛 Bug Fixes

\n\n

📝 Documentation updates

\n\n

👻 Maintenance

\n\n

📦 Dependency updates

\n\n
\n
\n
\nCommits\n
    \n
  • 8a46455 [maven-release-plugin] prepare release maven-gpg-plugin-3.2.8
  • \n
  • 7012821 Fix issueManagement, ciManagement system and url
  • \n
  • a9a8c84 Make empty classifier null (not empty string) (#287)
  • \n
  • a8368b0 Add .mvn
  • \n
  • f0e45e0 Update parent POM to 45 (#284)
  • \n
  • cb1236c Bump bouncycastleVersion from 1.78.1 to 1.80 (#127)
  • \n
  • 5377a10 Bump commons-io:commons-io from 2.18.0 to 2.19.0 (#133)
  • \n
  • 8b63932 Bump org.apache.maven.plugins:maven-invoker-plugin from 3.8.0 to 3.9.0 (#125)
  • \n
  • 54ea518 Bump org.simplify4u.plugins:pgpverify-maven-plugin from 1.18.2 to 1.19.1
  • \n
  • a6a412d Remove old JIRA issue link
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.apache.maven.plugins:maven-gpg-plugin&package-manager=maven&previous-version=3.2.7&new-version=3.2.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2191/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2191/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2190", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2190/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2190/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2190/events", + "html_url": "https://github.com/hub4j/github-api/pull/2190", + "id": 3858243660, + "node_id": "PR_kwDOAAlq-s6_e9RM", + "number": 2190, + "title": "fix: override GHPullRequest isPullRequest", + "user": { + "login": "Anonycoders", + "id": 40047636, + "node_id": "MDQ6VXNlcjQwMDQ3NjM2", + "avatar_url": "https://avatars.githubusercontent.com/u/40047636?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Anonycoders", + "html_url": "https://github.com/Anonycoders", + "followers_url": "https://api.github.com/users/Anonycoders/followers", + "following_url": "https://api.github.com/users/Anonycoders/following{/other_user}", + "gists_url": "https://api.github.com/users/Anonycoders/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Anonycoders/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Anonycoders/subscriptions", + "organizations_url": "https://api.github.com/users/Anonycoders/orgs", + "repos_url": "https://api.github.com/users/Anonycoders/repos", + "events_url": "https://api.github.com/users/Anonycoders/events{/privacy}", + "received_events_url": "https://api.github.com/users/Anonycoders/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-01-27T00:18:17Z", + "updated_at": "2026-02-10T07:49:48Z", + "closed_at": "2026-02-10T07:49:34Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2190", + "html_url": "https://github.com/hub4j/github-api/pull/2190", + "diff_url": "https://github.com/hub4j/github-api/pull/2190.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2190.patch", + "merged_at": "2026-02-10T07:49:34Z" + }, + "body": "# Description\r\n\r\n* Fixes #2061\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2190/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2190/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, { "url": "https://api.github.com/repos/hub4j/github-api/issues/2185", "repository_url": "https://api.github.com/repos/hub4j/github-api", @@ -35,15 +286,15 @@ "site_admin": false }, "labels": [], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, + "comments": 1, "created_at": "2026-01-25T19:29:46Z", - "updated_at": "2026-01-25T19:29:46Z", - "closed_at": null, + "updated_at": "2026-02-10T07:59:14Z", + "closed_at": "2026-02-10T07:58:24Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, @@ -53,9 +304,9 @@ "html_url": "https://github.com/hub4j/github-api/pull/2185", "diff_url": "https://github.com/hub4j/github-api/pull/2185.diff", "patch_url": "https://github.com/hub4j/github-api/pull/2185.patch", - "merged_at": null + "merged_at": "2026-02-10T07:58:24Z" }, - "body": "# Description\r\n\r\nFixes #2032 - (`GHPullRequestQueryBuilder` doesn't seem to support `pageSize(int)` but `GHIssueQueryBuilder` does)\r\n\r\nhttps://docs.github.com/en/rest/pulls/pulls?apiVersion=2022-11-28#list-pull-requests\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "body": "# Description\r\n\r\n* Fixes #2032 - (`GHPullRequestQueryBuilder` doesn't seem to support `pageSize(int)` but `GHIssueQueryBuilder` does)\r\n\r\nhttps://docs.github.com/en/rest/pulls/pulls?apiVersion=2022-11-28#list-pull-requests\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", "reactions": { "url": "https://api.github.com/repos/hub4j/github-api/issues/2185/reactions", "total_count": 0, @@ -106,15 +357,15 @@ "site_admin": false }, "labels": [], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 1, + "comments": 2, "created_at": "2026-01-25T03:46:29Z", - "updated_at": "2026-01-25T04:32:25Z", - "closed_at": null, + "updated_at": "2026-02-10T07:51:41Z", + "closed_at": "2026-02-10T07:51:18Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, @@ -124,7 +375,7 @@ "html_url": "https://github.com/hub4j/github-api/pull/2184", "diff_url": "https://github.com/hub4j/github-api/pull/2184.diff", "patch_url": "https://github.com/hub4j/github-api/pull/2184.patch", - "merged_at": null + "merged_at": "2026-02-10T07:51:18Z" }, "body": "# Description\r\n\r\nThis change adds new functionality to allow `marking draft PRs as ready for review` using GraphQL as it's not supported by REST.\r\n\r\nhttps://docs.github.com/en/graphql/reference/mutations#markpullrequestreadyforreview\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", "reactions": { @@ -145,16 +396,16 @@ "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2183", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2182", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/events", - "html_url": "https://github.com/hub4j/github-api/pull/2183", - "id": 3852488828, - "node_id": "PR_kwDOAAlq-s6_MeOS", - "number": 2183, - "title": "Move to Jackson 3 - Phase 2", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2182/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2182/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2182/events", + "html_url": "https://github.com/hub4j/github-api/pull/2182", + "id": 3852417004, + "node_id": "PR_kwDOAAlq-s6_MQiJ", + "number": 2182, + "title": "Enable Jackson 3 - Phase 1", "user": { "login": "pvillard31", "id": 11541012, @@ -177,29 +428,29 @@ "site_admin": false }, "labels": [], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2026-01-25T03:36:00Z", - "updated_at": "2026-01-25T03:36:00Z", - "closed_at": null, + "comments": 1, + "created_at": "2026-01-25T02:13:04Z", + "updated_at": "2026-01-25T03:20:51Z", + "closed_at": "2026-01-25T03:20:35Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2183", - "html_url": "https://github.com/hub4j/github-api/pull/2183", - "diff_url": "https://github.com/hub4j/github-api/pull/2183.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2183.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2182", + "html_url": "https://github.com/hub4j/github-api/pull/2182", + "diff_url": "https://github.com/hub4j/github-api/pull/2182.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2182.patch", + "merged_at": "2026-01-25T03:20:35Z" }, - "body": "# Description\r\n\r\nSee #2173 for the initial PR and associated discussion.\r\n\r\nThis PR is the follow-up of #2182.\r\n\r\n- Design GitHubJackson interface with methods for reading/writing JSON Implement GitHubJackson2 and GitHubJackson3\r\n- Create DefaultGitHubJackson factory with programmatic selection\r\n- Create GitHubJacksonException wrapper classes\r\n- Add GitHubBuilder.withJackson() for configuring Jackson implementation\r\n- Add testing infrastructure for both Jackson versions\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "body": "# Description\r\n\r\nSee discussion in #2173.\r\nThis is a first PR to stay on Jackson 2.x but prepare for Jackson 3 support.\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2183/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2182/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -210,69 +461,69 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2182/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2173", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2180", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/events", - "html_url": "https://github.com/hub4j/github-api/pull/2173", - "id": 3751227811, - "node_id": "PR_kwDOAAlq-s66AnNf", - "number": 2173, - "title": "Move to Jackson 3", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2180/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2180/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2180/events", + "html_url": "https://github.com/hub4j/github-api/pull/2180", + "id": 3839900916, + "node_id": "PR_kwDOAAlq-s6-iczp", + "number": 2180, + "title": "fix: adjust enterprise api url for graphql use case", "user": { - "login": "pvillard31", - "id": 11541012, - "node_id": "MDQ6VXNlcjExNTQxMDEy", - "avatar_url": "https://avatars.githubusercontent.com/u/11541012?v=4", + "login": "Anonycoders", + "id": 40047636, + "node_id": "MDQ6VXNlcjQwMDQ3NjM2", + "avatar_url": "https://avatars.githubusercontent.com/u/40047636?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/pvillard31", - "html_url": "https://github.com/pvillard31", - "followers_url": "https://api.github.com/users/pvillard31/followers", - "following_url": "https://api.github.com/users/pvillard31/following{/other_user}", - "gists_url": "https://api.github.com/users/pvillard31/gists{/gist_id}", - "starred_url": "https://api.github.com/users/pvillard31/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/pvillard31/subscriptions", - "organizations_url": "https://api.github.com/users/pvillard31/orgs", - "repos_url": "https://api.github.com/users/pvillard31/repos", - "events_url": "https://api.github.com/users/pvillard31/events{/privacy}", - "received_events_url": "https://api.github.com/users/pvillard31/received_events", + "url": "https://api.github.com/users/Anonycoders", + "html_url": "https://github.com/Anonycoders", + "followers_url": "https://api.github.com/users/Anonycoders/followers", + "following_url": "https://api.github.com/users/Anonycoders/following{/other_user}", + "gists_url": "https://api.github.com/users/Anonycoders/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Anonycoders/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Anonycoders/subscriptions", + "organizations_url": "https://api.github.com/users/Anonycoders/orgs", + "repos_url": "https://api.github.com/users/Anonycoders/repos", + "events_url": "https://api.github.com/users/Anonycoders/events{/privacy}", + "received_events_url": "https://api.github.com/users/Anonycoders/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 5, - "created_at": "2025-12-21T15:03:00Z", - "updated_at": "2026-01-25T02:15:17Z", - "closed_at": null, + "comments": 1, + "created_at": "2026-01-21T20:26:10Z", + "updated_at": "2026-01-24T22:05:14Z", + "closed_at": "2026-01-24T22:05:06Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2173", - "html_url": "https://github.com/hub4j/github-api/pull/2173", - "diff_url": "https://github.com/hub4j/github-api/pull/2173.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2173.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2180", + "html_url": "https://github.com/hub4j/github-api/pull/2180", + "diff_url": "https://github.com/hub4j/github-api/pull/2180.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2180.patch", + "merged_at": "2026-01-24T22:05:06Z" }, - "body": "# Description\r\n\r\nFollowing discussion in #2166.\r\nFixes #2166.\r\n\r\nFor reference: https://github.com/FasterXML/jackson/blob/main/jackson3/MIGRATING_TO_JACKSON_3.md\r\n\r\nThese changes are only targeting the 2.x line since it may be considered as containing breaking changes and requires a minimum java version of Java 17.\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "body": "# Description\r\n\r\nFor `GitHub.com` this is `https://api.github.com/graphql`. For `GitHub Enterprise Server`, the GraphQL endpoint is at `/api/graphql (not /api/v3/graphql)`.\r\nThis change makes sure the URL constructed appropriately.\r\n\r\nhttps://docs.github.com/en/enterprise-cloud@latest/graphql/guides/managing-enterprise-accounts#3-setting-up-insomnia-to-use-the-github-graphql-api-with-enterprise-accounts\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2173/reactions", - "total_count": 0, - "+1": 0, + "url": "https://api.github.com/repos/hub4j/github-api/issues/2180/reactions", + "total_count": 1, + "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, @@ -281,22 +532,22 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2180/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2168", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2178", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/events", - "html_url": "https://github.com/hub4j/github-api/pull/2168", - "id": 3678905639, - "node_id": "PR_kwDOAAlq-s62PChC", - "number": 2168, - "title": "Chore(deps): Bump spring.boot.version from 3.4.5 to 4.0.0", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2178/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2178/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2178/events", + "html_url": "https://github.com/hub4j/github-api/pull/2178", + "id": 3774013900, + "node_id": "PR_kwDOAAlq-s67KzV5", + "number": 2178, + "title": "Chore(deps): Bump jjwt.suite.version from 0.12.6 to 0.13.0", "user": { "login": "dependabot[bot]", "id": 49699333, @@ -338,29 +589,1199 @@ "description": "Pull requests that update Java code" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-12-01T02:09:06Z", - "updated_at": "2026-01-01T02:00:03Z", - "closed_at": null, + "comments": 1, + "created_at": "2026-01-01T02:01:02Z", + "updated_at": "2026-01-24T21:50:50Z", + "closed_at": "2026-01-24T21:50:09Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2168", - "html_url": "https://github.com/hub4j/github-api/pull/2168", - "diff_url": "https://github.com/hub4j/github-api/pull/2168.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2168.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2178", + "html_url": "https://github.com/hub4j/github-api/pull/2178", + "diff_url": "https://github.com/hub4j/github-api/pull/2178.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2178.patch", + "merged_at": "2026-01-24T21:50:09Z" + }, + "body": "Bumps `jjwt.suite.version` from 0.12.6 to 0.13.0.\nUpdates `io.jsonwebtoken:jjwt-api` from 0.12.6 to 0.13.0\n
\nRelease notes\n

Sourced from io.jsonwebtoken:jjwt-api's releases.

\n
\n

0.13.0

\n

This is the last minor JJWT release branch that will support Java 7.

\n

Any necessary emergency bug fixes will be fixed in subsequent 0.13.x patch releases, but all new development, including Java 8 compatible changes, will be in the next minor (0.14.0) release.

\n

All future JJWT major and minor versions ( 0.14.0 and later) will require Java 8 or later.

\n

What's Changed

\n

This release contains a single change:

\n
    \n
  • The previously private JacksonDeserializer(ObjectMapper objectMapper, Map<String, Class<?>> claimTypeMap) constructor is now public for those that want register a claims type converter on their own specified ObjectMapper instance. Thank you to @​kesrishubham2510 for PR #972. See Issue 914.
  • \n
\n

Full Changelog: https://github.com/jwtk/jjwt/compare/0.12.7...0.13.0

\n

0.12.7

\n

This patch release:

\n
    \n
  • \n

    Adds a new Maven BOM! This is useful for multi-module projects. See Issue 967.

    \n
  • \n
  • \n

    Allows the JwtParserBuilder to have empty nested algorithm collections, effectively disabling the parser's associated feature:

    \n
      \n
    • Emptying the zip() nested collection disables JWT decompression.
    • \n
    • Emptying the sig() nested collection disables JWS mac/signature verification (i.e. all JWSs will be unsupported/rejected).
    • \n
    • Emptying either the enc() or key() nested collections disables JWE decryption (i.e. all JWEs will be unsupported/rejected)
    • \n
    \n

    See Issue 996.

    \n
  • \n
  • \n

    Fixes bug 961 where JwtParserBuilder nested collection builders were not correctly replacing algorithms with the same id.

    \n
  • \n
  • \n

    Ensures a JwkSet's keys collection is no longer entirely secret/redacted by default. This was an overzealous default that was unnecessarily restrictive; the keys collection itself should always be public, and each individual key within should determine which fields should be redacted when printed. See Issue 976.

    \n
  • \n
  • \n

    Improves performance slightly by ensuring all jjwt-api utility methods that create *Builder instances (Jwts.builder(), Jwts.parserBuilder(), Jwks.builder(), etc) no longer use reflection.

    \n

    Instead,static factories are created via reflection only once during initial jjwt-api classloading, and then *Builders are created via standard instantiation using the new operator thereafter. This also benefits certain environments that may not have ideal ClassLoader implementations (e.g. Tomcat in some cases).

    \n

    NOTE: because this changes which classes are loaded via reflection, any environments that must explicitly reference reflective class names (e.g. GraalVM applications) will need to be updated to reflect the new factory class names.

    \n

    See Issue 988.

    \n
  • \n
  • \n

    Upgrades the Gson dependency to 2.11.0

    \n
  • \n
  • \n

    Upgrades the BouncyCastle dependency to 1.78.1

    \n
  • \n
\n

New Contributors

\n\n

Full Changelog: https://github.com/jwtk/jjwt/compare/0.12.6...0.12.7

\n
\n
\n
\nChangelog\n

Sourced from io.jsonwebtoken:jjwt-api's changelog.

\n
\n

0.13.0

\n

This is the last minor JJWT release branch that will support Java 7. Any necessary emergency bug fixes will be fixed in subsequent 0.13.x patch releases, but all new development, including Java 8 compatible changes, will be in the next minor (0.14.0) release.

\n

All future JJWT major and minor versions ( 0.14.0 and later) will require Java 8 or later.

\n

This 0.13.0 minor release has only one change:

\n
    \n
  • The previously private JacksonDeserializer(ObjectMapper objectMapper, Map<String, Class<?>> claimTypeMap) constructor is now public for those that want register a claims\ntype converter on their own specified ObjectMapper instance. See Issue 914.
  • \n
\n

0.12.7

\n

This patch release:

\n
    \n
  • \n

    Adds a new Maven BOM, useful for multi-module projects. See Issue 967.

    \n
  • \n
  • \n

    Allows the JwtParserBuilder to have empty nested algorithm collections, effectively disabling the parser's associated feature:

    \n
      \n
    • Emptying the zip() nested collection disables JWT decompression.
    • \n
    • Emptying the sig() nested collection disables JWS mac/signature verification (i.e. all JWSs will be unsupported/rejected).
    • \n
    • Emptying either the enc() or key() nested collections disables JWE decryption (i.e. all JWEs will be unsupported/rejected)
    • \n
    \n

    See Issue 996.

    \n
  • \n
  • \n

    Fixes bug 961 where JwtParserBuilder nested collection builders were not correctly replacing algorithms with the same id.

    \n
  • \n
  • \n

    Ensures a JwkSet's keys collection is no longer entirely secret/redacted by default. This was an overzealous default that was unnecessarily restrictive; the keys collection itself should always be public, and each individual key within should determine which fields should be redacted when printed. See Issue 976.

    \n
  • \n
  • \n

    Improves performance slightly by ensuring all jjwt-api utility methods that create *Builder instances (Jwts.builder(), Jwts.parserBuilder(), Jwks.builder(), etc) no longer use reflection.

    \n

    Instead,static factories are created via reflection only once during initial jjwt-api classloading, and then *Builders are created via standard instantiation using the new operator thereafter. This also benefits certain environments that may not have ideal ClassLoader implementations (e.g. Tomcat in some cases).

    \n

    NOTE: because this changes which classes are loaded via reflection, any environments that must explicitly reference reflective class names (e.g. GraalVM applications) will need to be updated to reflect the new factory class names.

    \n

    See Issue 988.

    \n
  • \n
  • \n

    Upgrades the Gson dependency to 2.11.0

    \n
  • \n
  • \n

    Upgrades the BouncyCastle dependency to 1.78.1

    \n
  • \n
\n
\n
\n
\nCommits\n\n
\n
\n\nUpdates `io.jsonwebtoken:jjwt-impl` from 0.12.6 to 0.13.0\n
\nRelease notes\n

Sourced from io.jsonwebtoken:jjwt-impl's releases.

\n
\n

0.13.0

\n

This is the last minor JJWT release branch that will support Java 7.

\n

Any necessary emergency bug fixes will be fixed in subsequent 0.13.x patch releases, but all new development, including Java 8 compatible changes, will be in the next minor (0.14.0) release.

\n

All future JJWT major and minor versions ( 0.14.0 and later) will require Java 8 or later.

\n

What's Changed

\n

This release contains a single change:

\n
    \n
  • The previously private JacksonDeserializer(ObjectMapper objectMapper, Map<String, Class<?>> claimTypeMap) constructor is now public for those that want register a claims type converter on their own specified ObjectMapper instance. Thank you to @​kesrishubham2510 for PR #972. See Issue 914.
  • \n
\n

Full Changelog: https://github.com/jwtk/jjwt/compare/0.12.7...0.13.0

\n

0.12.7

\n

This patch release:

\n
    \n
  • \n

    Adds a new Maven BOM! This is useful for multi-module projects. See Issue 967.

    \n
  • \n
  • \n

    Allows the JwtParserBuilder to have empty nested algorithm collections, effectively disabling the parser's associated feature:

    \n
      \n
    • Emptying the zip() nested collection disables JWT decompression.
    • \n
    • Emptying the sig() nested collection disables JWS mac/signature verification (i.e. all JWSs will be unsupported/rejected).
    • \n
    • Emptying either the enc() or key() nested collections disables JWE decryption (i.e. all JWEs will be unsupported/rejected)
    • \n
    \n

    See Issue 996.

    \n
  • \n
  • \n

    Fixes bug 961 where JwtParserBuilder nested collection builders were not correctly replacing algorithms with the same id.

    \n
  • \n
  • \n

    Ensures a JwkSet's keys collection is no longer entirely secret/redacted by default. This was an overzealous default that was unnecessarily restrictive; the keys collection itself should always be public, and each individual key within should determine which fields should be redacted when printed. See Issue 976.

    \n
  • \n
  • \n

    Improves performance slightly by ensuring all jjwt-api utility methods that create *Builder instances (Jwts.builder(), Jwts.parserBuilder(), Jwks.builder(), etc) no longer use reflection.

    \n

    Instead,static factories are created via reflection only once during initial jjwt-api classloading, and then *Builders are created via standard instantiation using the new operator thereafter. This also benefits certain environments that may not have ideal ClassLoader implementations (e.g. Tomcat in some cases).

    \n

    NOTE: because this changes which classes are loaded via reflection, any environments that must explicitly reference reflective class names (e.g. GraalVM applications) will need to be updated to reflect the new factory class names.

    \n

    See Issue 988.

    \n
  • \n
  • \n

    Upgrades the Gson dependency to 2.11.0

    \n
  • \n
  • \n

    Upgrades the BouncyCastle dependency to 1.78.1

    \n
  • \n
\n

New Contributors

\n\n

Full Changelog: https://github.com/jwtk/jjwt/compare/0.12.6...0.12.7

\n
\n
\n
\nChangelog\n

Sourced from io.jsonwebtoken:jjwt-impl's changelog.

\n
\n

0.13.0

\n

This is the last minor JJWT release branch that will support Java 7. Any necessary emergency bug fixes will be fixed in subsequent 0.13.x patch releases, but all new development, including Java 8 compatible changes, will be in the next minor (0.14.0) release.

\n

All future JJWT major and minor versions ( 0.14.0 and later) will require Java 8 or later.

\n

This 0.13.0 minor release has only one change:

\n
    \n
  • The previously private JacksonDeserializer(ObjectMapper objectMapper, Map<String, Class<?>> claimTypeMap) constructor is now public for those that want register a claims\ntype converter on their own specified ObjectMapper instance. See Issue 914.
  • \n
\n

0.12.7

\n

This patch release:

\n
    \n
  • \n

    Adds a new Maven BOM, useful for multi-module projects. See Issue 967.

    \n
  • \n
  • \n

    Allows the JwtParserBuilder to have empty nested algorithm collections, effectively disabling the parser's associated feature:

    \n
      \n
    • Emptying the zip() nested collection disables JWT decompression.
    • \n
    • Emptying the sig() nested collection disables JWS mac/signature verification (i.e. all JWSs will be unsupported/rejected).
    • \n
    • Emptying either the enc() or key() nested collections disables JWE decryption (i.e. all JWEs will be unsupported/rejected)
    • \n
    \n

    See Issue 996.

    \n
  • \n
  • \n

    Fixes bug 961 where JwtParserBuilder nested collection builders were not correctly replacing algorithms with the same id.

    \n
  • \n
  • \n

    Ensures a JwkSet's keys collection is no longer entirely secret/redacted by default. This was an overzealous default that was unnecessarily restrictive; the keys collection itself should always be public, and each individual key within should determine which fields should be redacted when printed. See Issue 976.

    \n
  • \n
  • \n

    Improves performance slightly by ensuring all jjwt-api utility methods that create *Builder instances (Jwts.builder(), Jwts.parserBuilder(), Jwks.builder(), etc) no longer use reflection.

    \n

    Instead,static factories are created via reflection only once during initial jjwt-api classloading, and then *Builders are created via standard instantiation using the new operator thereafter. This also benefits certain environments that may not have ideal ClassLoader implementations (e.g. Tomcat in some cases).

    \n

    NOTE: because this changes which classes are loaded via reflection, any environments that must explicitly reference reflective class names (e.g. GraalVM applications) will need to be updated to reflect the new factory class names.

    \n

    See Issue 988.

    \n
  • \n
  • \n

    Upgrades the Gson dependency to 2.11.0

    \n
  • \n
  • \n

    Upgrades the BouncyCastle dependency to 1.78.1

    \n
  • \n
\n
\n
\n
\nCommits\n\n
\n
\n\nUpdates `io.jsonwebtoken:jjwt-jackson` from 0.12.6 to 0.13.0\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2178/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2178/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2177", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2177/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2177/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2177/events", + "html_url": "https://github.com/hub4j/github-api/pull/2177", + "id": 3774013874, + "node_id": "PR_kwDOAAlq-s67KzVi", + "number": 2177, + "title": "Chore(deps): Bump codecov/codecov-action from 5.5.1 to 5.5.2", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", + "default": false, + "description": "Pull requests that update Github_actions code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-01-01T02:01:00Z", + "updated_at": "2026-01-23T20:37:39Z", + "closed_at": "2026-01-23T20:36:48Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2177", + "html_url": "https://github.com/hub4j/github-api/pull/2177", + "diff_url": "https://github.com/hub4j/github-api/pull/2177.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2177.patch", + "merged_at": "2026-01-23T20:36:48Z" + }, + "body": "Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.1 to 5.5.2.\n
\nRelease notes\n

Sourced from codecov/codecov-action's releases.

\n
\n

v5.5.2

\n

What's Changed

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/codecov/codecov-action/compare/v5.5.1...v5.5.2

\n
\n
\n
\nChangelog\n

Sourced from codecov/codecov-action's changelog.

\n
\n

v5.5.2

\n

What's Changed

\n

Full Changelog: https://github.com/codecov/codecov-action/compare/v5.5.1..v5.5.2

\n
\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=codecov/codecov-action&package-manager=github_actions&previous-version=5.5.1&new-version=5.5.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2177/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2177/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2176", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2176/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2176/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2176/events", + "html_url": "https://github.com/hub4j/github-api/pull/2176", + "id": 3774013831, + "node_id": "PR_kwDOAAlq-s67KzU-", + "number": 2176, + "title": "Chore(deps): Bump actions/download-artifact from 6 to 7", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", + "default": false, + "description": "Pull requests that update Github_actions code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-01-01T02:00:56Z", + "updated_at": "2026-01-24T21:51:17Z", + "closed_at": "2026-01-24T21:50:23Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2176", + "html_url": "https://github.com/hub4j/github-api/pull/2176", + "diff_url": "https://github.com/hub4j/github-api/pull/2176.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2176.patch", + "merged_at": "2026-01-24T21:50:23Z" + }, + "body": "Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7.\n
\nRelease notes\n

Sourced from actions/download-artifact's releases.

\n
\n

v7.0.0

\n

v7 - What's new

\n
\n

[!IMPORTANT]\nactions/download-artifact@v7 now runs on Node.js 24 (runs.using: node24) and requires a minimum Actions Runner version of 2.327.1. If you are using self-hosted runners, ensure they are updated before upgrading.

\n
\n

Node.js 24

\n

This release updates the runtime to Node.js 24. v6 had preliminary support for Node 24, however this action was by default still running on Node.js 20. Now this action by default will run on Node.js 24.

\n

What's Changed

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/actions/download-artifact/compare/v6.0.0...v7.0.0

\n
\n
\n
\nCommits\n
    \n
  • 37930b1 Merge pull request #452 from actions/download-artifact-v7-release
  • \n
  • 72582b9 doc: update readme
  • \n
  • 0d2ec9d chore: release v7.0.0 for Node.js 24 support
  • \n
  • fd7ae8f Merge pull request #451 from actions/fix-storage-blob
  • \n
  • d484700 chore: restore minimatch.dep.yml license file
  • \n
  • 03a8080 chore: remove obsolete dependency license files
  • \n
  • 56fe6d9 chore: update @​actions/artifact license file to 5.0.1
  • \n
  • 8e3ebc4 chore: update package-lock.json with @​actions/artifact@​5.0.1
  • \n
  • 1e3c4b4 fix: update @​actions/artifact to ^5.0.0 for Node.js 24 punycode fix
  • \n
  • 458627d chore: use local @​actions/artifact package for Node.js 24 testing
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/download-artifact&package-manager=github_actions&previous-version=6&new-version=7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2176/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2176/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2175", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2175/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2175/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2175/events", + "html_url": "https://github.com/hub4j/github-api/pull/2175", + "id": 3774013775, + "node_id": "PR_kwDOAAlq-s67KzUJ", + "number": 2175, + "title": "Chore(deps): Bump actions/upload-artifact from 5 to 6", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", + "default": false, + "description": "Pull requests that update Github_actions code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-01-01T02:00:52Z", + "updated_at": "2026-01-24T21:51:38Z", + "closed_at": "2026-01-24T21:50:40Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2175", + "html_url": "https://github.com/hub4j/github-api/pull/2175", + "diff_url": "https://github.com/hub4j/github-api/pull/2175.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2175.patch", + "merged_at": "2026-01-24T21:50:40Z" + }, + "body": "Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.\n
\nRelease notes\n

Sourced from actions/upload-artifact's releases.

\n
\n

v6.0.0

\n

v6 - What's new

\n
\n

[!IMPORTANT]\nactions/upload-artifact@v6 now runs on Node.js 24 (runs.using: node24) and requires a minimum Actions Runner version of 2.327.1. If you are using self-hosted runners, ensure they are updated before upgrading.

\n
\n

Node.js 24

\n

This release updates the runtime to Node.js 24. v5 had preliminary support for Node.js 24, however this action was by default still running on Node.js 20. Now this action by default will run on Node.js 24.

\n

What's Changed

\n\n

Full Changelog: https://github.com/actions/upload-artifact/compare/v5.0.0...v6.0.0

\n
\n
\n
\nCommits\n
    \n
  • b7c566a Merge pull request #745 from actions/upload-artifact-v6-release
  • \n
  • e516bc8 docs: correct description of Node.js 24 support in README
  • \n
  • ddc45ed docs: update README to correct action name for Node.js 24 support
  • \n
  • 615b319 chore: release v6.0.0 for Node.js 24 support
  • \n
  • 017748b Merge pull request #744 from actions/fix-storage-blob
  • \n
  • 38d4c79 chore: rebuild dist
  • \n
  • 7d27270 chore: add missing license cache files for @​actions/core, @​actions/io, and mi...
  • \n
  • 5f643d3 chore: update license files for @​actions/artifact@​5.0.1 dependencies
  • \n
  • 1df1684 chore: update package-lock.json with @​actions/artifact@​5.0.1
  • \n
  • b5b1a91 fix: update @​actions/artifact to ^5.0.0 for Node.js 24 punycode fix
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2175/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2175/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2174", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2174/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2174/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2174/events", + "html_url": "https://github.com/hub4j/github-api/pull/2174", + "id": 3774013768, + "node_id": "PR_kwDOAAlq-s67KzUC", + "number": 2174, + "title": "Chore(deps-dev): Bump org.mockito:mockito-core from 5.20.0 to 5.21.0", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2026-01-01T02:00:51Z", + "updated_at": "2026-01-24T21:51:51Z", + "closed_at": "2026-01-24T21:51:05Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2174", + "html_url": "https://github.com/hub4j/github-api/pull/2174", + "diff_url": "https://github.com/hub4j/github-api/pull/2174.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2174.patch", + "merged_at": "2026-01-24T21:51:05Z" + }, + "body": "Bumps [org.mockito:mockito-core](https://github.com/mockito/mockito) from 5.20.0 to 5.21.0.\n
\nRelease notes\n

Sourced from org.mockito:mockito-core's releases.

\n
\n

v5.21.0

\n

Changelog generated by Shipkit Changelog Gradle Plugin

\n

5.21.0

\n\n
\n
\n
\nCommits\n
    \n
  • 09d2230 Bump graalvm/setup-graalvm from 1.4.3 to 1.4.4 (#3768)
  • \n
  • df3e0cc Bump graalvm/setup-graalvm from 1.4.2 to 1.4.3 (#3767)
  • \n
  • 04a6e9f Bump actions/checkout from 5 to 6 (#3765)
  • \n
  • 756a3cf Add description of matchers to potential mismatch (#3760)
  • \n
  • 58ba445 Forbid mocking WeakReference with inline mock maker (#3759)
  • \n
  • 966d600 Bump actions/upload-artifact from 4 to 5 (#3756)
  • \n
  • 632bf7b Bump graalvm/setup-graalvm from 1.4.1 to 1.4.2 (#3755)
  • \n
  • 8564b43 Fix primitives support in GenericArrayReturnType for Android (#3753)
  • \n
  • bf3a809 Bump graalvm/setup-graalvm from 1.4.0 to 1.4.1 (#3744)
  • \n
  • cffddd4 Bump gradle/actions from 4 to 5 (#3743)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.mockito:mockito-core&package-manager=maven&previous-version=5.20.0&new-version=5.21.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2174/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2174/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2170", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2170/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2170/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2170/events", + "html_url": "https://github.com/hub4j/github-api/pull/2170", + "id": 3678909093, + "node_id": "PR_kwDOAAlq-s62PDSN", + "number": 2170, + "title": "Chore(deps): Bump actions/checkout from 5 to 6", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", + "default": false, + "description": "Pull requests that update Github_actions code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-12-01T02:10:52Z", + "updated_at": "2025-12-24T01:52:41Z", + "closed_at": "2025-12-24T01:52:29Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2170", + "html_url": "https://github.com/hub4j/github-api/pull/2170", + "diff_url": "https://github.com/hub4j/github-api/pull/2170.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2170.patch", + "merged_at": "2025-12-24T01:52:29Z" + }, + "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.\n
\nRelease notes\n

Sourced from actions/checkout's releases.

\n
\n

v6.0.0

\n

What's Changed

\n\n

Full Changelog: https://github.com/actions/checkout/compare/v5.0.0...v6.0.0

\n

v6-beta

\n

What's Changed

\n

Updated persist-credentials to store the credentials under $RUNNER_TEMP instead of directly in the local git config.

\n

This requires a minimum Actions Runner version of v2.329.0 to access the persisted credentials for Docker container action scenarios.

\n

v5.0.1

\n

What's Changed

\n\n

Full Changelog: https://github.com/actions/checkout/compare/v5...v5.0.1

\n
\n
\n
\nChangelog\n

Sourced from actions/checkout's changelog.

\n
\n

Changelog

\n

V6.0.0

\n\n

V5.0.1

\n\n

V5.0.0

\n\n

V4.3.1

\n\n

V4.3.0

\n\n

v4.2.2

\n\n

v4.2.1

\n\n

v4.2.0

\n\n

v4.1.7

\n\n

v4.1.6

\n\n

v4.1.5

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2170/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2170/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2169", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2169/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2169/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2169/events", + "html_url": "https://github.com/hub4j/github-api/pull/2169", + "id": 3678905792, + "node_id": "PR_kwDOAAlq-s62PCjL", + "number": 2169, + "title": "Chore(deps): Bump com.github.spotbugs:spotbugs-maven-plugin from 4.9.8.1 to 4.9.8.2", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-12-01T02:09:11Z", + "updated_at": "2025-12-24T01:54:46Z", + "closed_at": "2025-12-24T01:54:19Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2169", + "html_url": "https://github.com/hub4j/github-api/pull/2169", + "diff_url": "https://github.com/hub4j/github-api/pull/2169.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2169.patch", + "merged_at": "2025-12-24T01:54:19Z" + }, + "body": "Bumps [com.github.spotbugs:spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin) from 4.9.8.1 to 4.9.8.2.\n
\nRelease notes\n

Sourced from com.github.spotbugs:spotbugs-maven-plugin's releases.

\n
\n

Spotbugs Maven Plugin 4.9.8.2

\n\n
\n
\n
\nCommits\n
    \n
  • a03feda [maven-release-plugin] prepare release spotbugs-maven-plugin-4.9.8.2
  • \n
  • 1c8063d [gha] Update actions
  • \n
  • f59d628 Merge pull request #1265 from spotbugs/renovate/actions-checkout-6.x
  • \n
  • 1c232fb chore(deps): update actions/checkout action to v6
  • \n
  • 436be13 Merge pull request #1263 from spotbugs/renovate/actions-checkout-digest
  • \n
  • 0708203 Merge pull request #1264 from spotbugs/renovate/github-codeql-action-digest
  • \n
  • fcd2d1b chore(deps): update github/codeql-action digest to e12f017
  • \n
  • 7c54b5b chore(deps): update actions/checkout digest to 93cb6ef
  • \n
  • 79d724e Merge pull request #1262 from spotbugs/renovate/lang3.version
  • \n
  • b9bbed3 fix(deps): update dependency org.apache.commons:commons-lang3 to v3.20.0
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.github.spotbugs:spotbugs-maven-plugin&package-manager=maven&previous-version=4.9.8.1&new-version=4.9.8.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2169/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2169/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2168", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/events", + "html_url": "https://github.com/hub4j/github-api/pull/2168", + "id": 3678905639, + "node_id": "PR_kwDOAAlq-s62PChC", + "number": 2168, + "title": "Chore(deps): Bump spring.boot.version from 3.4.5 to 4.0.0", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-12-01T02:09:06Z", + "updated_at": "2026-02-01T02:02:44Z", + "closed_at": "2026-02-01T02:02:43Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2168", + "html_url": "https://github.com/hub4j/github-api/pull/2168", + "diff_url": "https://github.com/hub4j/github-api/pull/2168.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2168.patch", + "merged_at": null + }, + "body": "Bumps `spring.boot.version` from 3.4.5 to 4.0.0.\nUpdates `org.springframework.boot:spring-boot-dependencies` from 3.4.5 to 4.0.0\n
\nRelease notes\n

Sourced from org.springframework.boot:spring-boot-dependencies's releases.

\n
\n

v4.0.0

\n

Full release notes for Spring Boot 4.0 are available on the wiki. There is also a migration guide to help you upgrade from Spring Boot 3.5.

\n

:star: New Features

\n
    \n
  • Change tomcat and jetty runtime modules to starters #48175
  • \n
  • Rename spring-boot-kotlin-serialization to align with the name of the Kotlinx module that it pulls in #48076
  • \n
\n

:lady_beetle: Bug Fixes

\n
    \n
  • Error properties are a general web concern and should not be located beneath server.* #48201
  • \n
  • With both Jackson 2 and 3 on the classpath, @JsonTest fails due to duplicate jacksonTesterFactoryBean #48198
  • \n
  • Gradle war task does not exclude starter POMs from lib-provided #48197
  • \n
  • spring.test.webclient.mockrestserviceserver.enabled is not aligned with its module's name #48193
  • \n
  • SslMeterBinder doesn't register metrics for dynamically added bundles if no bundles exist at bind time #48182
  • \n
  • Properties bound in the child management context ignore the parent's environment prefix #48177
  • \n
  • ssl.chain.expiry metrics doesn't update for dynamically registered SSL bundles #48171
  • \n
  • Starter for spring-boot-micrometer-metrics is missing #48161
  • \n
  • Elasticsearch client's sniffer functionality should not be enabled by default #48155
  • \n
  • spring-boot-starter-elasticsearch should depend on elasticsearch-java #48141
  • \n
  • Auto-configuration exclusions are checked using a different class loader to the one that loads auto-configuration classes #48132
  • \n
  • New arm64 macbooks fail to bootBuildImage due to incorrect platform image #48128
  • \n
  • Properties for configuring an isolated JsonMapper or ObjectMapper are incorrectly named #48116
  • \n
  • Buildpack fails with recent Docker installs due to hardcoded version in URL #48103
  • \n
  • Image building may fail when specifying a platform if an image has already been built with a different platform #48099
  • \n
  • Default values of Kotlinx Serialization JSON configuration properties are not documented #48097
  • \n
  • Custom XML converters should override defaults in HttpMessageConverters #48096
  • \n
  • Kotlin serialization is used too aggressively when other JSON libraries are available #48070
  • \n
  • PortInUseException incorrectly thrown on failure to bind port due to Netty IP misconfiguration #48059
  • \n
  • Auto-configured JCacheMetrics cannot be customized #48057
  • \n
  • WebSecurityCustomizer beans are excluded by WebMvcTest #48055
  • \n
  • Deprecated EnvironmentPostProcessor does not resolve arguments #48047
  • \n
  • RetryPolicySettings should refer to maxRetries, not maxAttempts #48023
  • \n
  • Devtools Restarter does not work with a parameterless main method #47996
  • \n
  • Dependency management for Kafka should not manage Scala 2.12 libraries #47991
  • \n
  • spring-boot-mail should depend on jakarta.mail:jakarta.mail-api and org.eclipse.angus:angus-mail instead of org.eclipse.angus:jakarta.mail #47983
  • \n
  • spring-boot-starter-data-mongodb-reactive has dependency on reactor-test #47982
  • \n
  • Support for ReactiveElasticsearchClient is in the wrong module #47848
  • \n
\n

:notebook_with_decorative_cover: Documentation

\n
    \n
  • Removed property spring.test.webclient.register-rest-template is still documented #48199
  • \n
  • Mention support for detecting AWS ECS in "Deploying to the Cloud" #48170
  • \n
  • Revise AWS section of "Deploying to the Cloud" in reference manual #48163
  • \n
  • Fix typo in PortInUseException Javadoc #48134
  • \n
  • Correct section about required setters in "Type-safe Configuration Properties" #48131
  • \n
  • Use since attribute in configuration properties deprecation consistently #48122
  • \n
  • Document EndpointJsonMapper and management.endpoints.jackson.isolated-json-mapper #48115
  • \n
  • Document support for configuring servlet context init parameters using properties #48112
  • \n
  • Some configuration properties are not documented in the appendix #48095
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1c0e08b Release v4.0.0
  • \n
  • 3487928 Merge branch '3.5.x'
  • \n
  • 29b8e96 Switch make-default in preparation for Spring Boot 4.0.0
  • \n
  • 88da0dd Merge branch '3.5.x'
  • \n
  • 56feeaa Next development version (v3.5.9-SNAPSHOT)
  • \n
  • 3becdc7 Move server.error properties to spring.web.error
  • \n
  • 2b30632 Merge branch '3.5.x'
  • \n
  • 4f03b44 Merge branch '3.4.x' into 3.5.x
  • \n
  • 3d15c13 Next development version (v3.4.13-SNAPSHOT)
  • \n
  • dc140df Upgrade to Spring Framework 7.0.1
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\nUpdates `org.springframework.boot:spring-boot-maven-plugin` from 3.4.5 to 4.0.0\n
\nRelease notes\n

Sourced from org.springframework.boot:spring-boot-maven-plugin's releases.

\n
\n

v4.0.0

\n

Full release notes for Spring Boot 4.0 are available on the wiki. There is also a migration guide to help you upgrade from Spring Boot 3.5.

\n

:star: New Features

\n
    \n
  • Change tomcat and jetty runtime modules to starters #48175
  • \n
  • Rename spring-boot-kotlin-serialization to align with the name of the Kotlinx module that it pulls in #48076
  • \n
\n

:lady_beetle: Bug Fixes

\n
    \n
  • Error properties are a general web concern and should not be located beneath server.* #48201
  • \n
  • With both Jackson 2 and 3 on the classpath, @JsonTest fails due to duplicate jacksonTesterFactoryBean #48198
  • \n
  • Gradle war task does not exclude starter POMs from lib-provided #48197
  • \n
  • spring.test.webclient.mockrestserviceserver.enabled is not aligned with its module's name #48193
  • \n
  • SslMeterBinder doesn't register metrics for dynamically added bundles if no bundles exist at bind time #48182
  • \n
  • Properties bound in the child management context ignore the parent's environment prefix #48177
  • \n
  • ssl.chain.expiry metrics doesn't update for dynamically registered SSL bundles #48171
  • \n
  • Starter for spring-boot-micrometer-metrics is missing #48161
  • \n
  • Elasticsearch client's sniffer functionality should not be enabled by default #48155
  • \n
  • spring-boot-starter-elasticsearch should depend on elasticsearch-java #48141
  • \n
  • Auto-configuration exclusions are checked using a different class loader to the one that loads auto-configuration classes #48132
  • \n
  • New arm64 macbooks fail to bootBuildImage due to incorrect platform image #48128
  • \n
  • Properties for configuring an isolated JsonMapper or ObjectMapper are incorrectly named #48116
  • \n
  • Buildpack fails with recent Docker installs due to hardcoded version in URL #48103
  • \n
  • Image building may fail when specifying a platform if an image has already been built with a different platform #48099
  • \n
  • Default values of Kotlinx Serialization JSON configuration properties are not documented #48097
  • \n
  • Custom XML converters should override defaults in HttpMessageConverters #48096
  • \n
  • Kotlin serialization is used too aggressively when other JSON libraries are available #48070
  • \n
  • PortInUseException incorrectly thrown on failure to bind port due to Netty IP misconfiguration #48059
  • \n
  • Auto-configured JCacheMetrics cannot be customized #48057
  • \n
  • WebSecurityCustomizer beans are excluded by WebMvcTest #48055
  • \n
  • Deprecated EnvironmentPostProcessor does not resolve arguments #48047
  • \n
  • RetryPolicySettings should refer to maxRetries, not maxAttempts #48023
  • \n
  • Devtools Restarter does not work with a parameterless main method #47996
  • \n
  • Dependency management for Kafka should not manage Scala 2.12 libraries #47991
  • \n
  • spring-boot-mail should depend on jakarta.mail:jakarta.mail-api and org.eclipse.angus:angus-mail instead of org.eclipse.angus:jakarta.mail #47983
  • \n
  • spring-boot-starter-data-mongodb-reactive has dependency on reactor-test #47982
  • \n
  • Support for ReactiveElasticsearchClient is in the wrong module #47848
  • \n
\n

:notebook_with_decorative_cover: Documentation

\n
    \n
  • Removed property spring.test.webclient.register-rest-template is still documented #48199
  • \n
  • Mention support for detecting AWS ECS in "Deploying to the Cloud" #48170
  • \n
  • Revise AWS section of "Deploying to the Cloud" in reference manual #48163
  • \n
  • Fix typo in PortInUseException Javadoc #48134
  • \n
  • Correct section about required setters in "Type-safe Configuration Properties" #48131
  • \n
  • Use since attribute in configuration properties deprecation consistently #48122
  • \n
  • Document EndpointJsonMapper and management.endpoints.jackson.isolated-json-mapper #48115
  • \n
  • Document support for configuring servlet context init parameters using properties #48112
  • \n
  • Some configuration properties are not documented in the appendix #48095
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1c0e08b Release v4.0.0
  • \n
  • 3487928 Merge branch '3.5.x'
  • \n
  • 29b8e96 Switch make-default in preparation for Spring Boot 4.0.0
  • \n
  • 88da0dd Merge branch '3.5.x'
  • \n
  • 56feeaa Next development version (v3.5.9-SNAPSHOT)
  • \n
  • 3becdc7 Move server.error properties to spring.web.error
  • \n
  • 2b30632 Merge branch '3.5.x'
  • \n
  • 4f03b44 Merge branch '3.4.x' into 3.5.x
  • \n
  • 3d15c13 Next development version (v3.4.13-SNAPSHOT)
  • \n
  • dc140df Upgrade to Spring Framework 7.0.1
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2168/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2167", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2167/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2167/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2167/events", + "html_url": "https://github.com/hub4j/github-api/pull/2167", + "id": 3678905236, + "node_id": "PR_kwDOAAlq-s62PCbD", + "number": 2167, + "title": "Chore(deps-dev): Bump org.mockito:mockito-core from 5.16.1 to 5.20.0", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-12-01T02:08:53Z", + "updated_at": "2025-12-24T01:54:57Z", + "closed_at": "2025-12-24T01:54:37Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2167", + "html_url": "https://github.com/hub4j/github-api/pull/2167", + "diff_url": "https://github.com/hub4j/github-api/pull/2167.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2167.patch", + "merged_at": "2025-12-24T01:54:37Z" + }, + "body": "Bumps [org.mockito:mockito-core](https://github.com/mockito/mockito) from 5.16.1 to 5.20.0.\n
\nRelease notes\n

Sourced from org.mockito:mockito-core's releases.

\n
\n

v5.20.0

\n

Changelog generated by Shipkit Changelog Gradle Plugin

\n

5.20.0

\n\n

v5.19.0

\n

Changelog generated by Shipkit Changelog Gradle Plugin

\n

5.19.0

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 3a1a19e Add support for generic types in MockedConstruction and MockedStatic (#3729)
  • \n
  • f3c957a Bump org.assertj:assertj-core from 3.27.4 to 3.27.5 (#3730)
  • \n
  • 3cfbd42 Bump graalvm/setup-graalvm from 1.3.6 to 1.3.7 (#3725)
  • \n
  • 6f9a04b Bump com.gradle.develocity from 4.1.1 to 4.2 (#3726)
  • \n
  • c75dfb8 Bump org.eclipse.platform:org.eclipse.osgi from 3.23.100 to 3.23.200 (#3720)
  • \n
  • 54474fa Bump graalvm/setup-graalvm from 1.3.5 to 1.3.6 (#3719)
  • \n
  • bc06f21 Use Assume.assumeThat for SequencedCollection tests (#3711)
  • \n
  • a10aed0 Bump actions/setup-java from 4 to 5 (#3715)
  • \n
  • 37bb3e5 Fix metadata generation on GraalVM (#3710)
  • \n
  • ef2fd6f Bump com.gradle.develocity from 4.1 to 4.1.1 (#3713)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.mockito:mockito-core&package-manager=maven&previous-version=5.16.1&new-version=5.20.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2167/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2167/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2164", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2164/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2164/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2164/events", + "html_url": "https://github.com/hub4j/github-api/pull/2164", + "id": 3577024168, + "node_id": "PR_kwDOAAlq-s6w8R4i", + "number": 2164, + "title": "Chore(deps): Bump com.squareup.okhttp3:okhttp from 4.12.0 to 5.3.0", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-11-01T02:02:30Z", + "updated_at": "2025-12-01T02:11:43Z", + "closed_at": "2025-12-01T02:11:42Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2164", + "html_url": "https://github.com/hub4j/github-api/pull/2164", + "diff_url": "https://github.com/hub4j/github-api/pull/2164.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2164.patch", + "merged_at": null + }, + "body": "Bumps [com.squareup.okhttp3:okhttp](https://github.com/square/okhttp) from 4.12.0 to 5.3.0.\n
\nChangelog\n

Sourced from com.squareup.okhttp3:okhttp's changelog.

\n
\n

Version 5.3.0

\n

2025-10-30

\n
    \n
  • \n

    New: Add tags to Call, including computable tags. Use this to attach application-specific\nmetadata to a Call in an EventListener or Interceptor. The tag can be read in any other\nEventListener or Interceptor.

    \n
      override fun intercept(chain: Interceptor.Chain): Response {\n    chain.call().tag(MyAnalyticsTag::class) {\n      MyAnalyticsTag(...)\n    }\n
    return chain.proceed(chain.request())\n
    \n

    }\n

    \n
  • \n
  • \n

    New: Support request bodies on HTTP/1.1 connection upgrades.

    \n
  • \n
  • \n

    New: EventListener.plus() makes it easier to observe events in multiple listeners.

    \n
  • \n
  • \n

    Fix: Don't spam logs with ‘Method isLoggable in android.util.Log not mocked.’ when using\nOkHttp in Robolectric and Paparazzi tests.

    \n
  • \n
  • \n

    Upgrade: [Kotlin 2.2.21][kotlin_2_2_21].

    \n
  • \n
  • \n

    Upgrade: [Okio 3.16.2][okio_3_16_2].

    \n
  • \n
  • \n

    Upgrade: [ZSTD-KMP 0.4.0][zstd_kmp_0_4_0]. This update fixes a bug that caused APKs to fail\n[16 KB ELF alignment checks][elf_alignment].

    \n
  • \n
\n

Version 5.2.1

\n

2025-10-09

\n
    \n
  • \n

    Fix: Don't crash when calling Socket.shutdownOutput() or shutdownInput() on an SSLSocket\non Android API 21 through 23. This method throws an UnsupportedOperationException, so we now\ncatch that and close the underlying stream instead.

    \n
  • \n
  • \n

    Upgrade: [Okio 3.16.1][okio_3_16_1].

    \n
  • \n
\n

Version 5.2.0

\n

2025-10-07

\n
    \n
  • \n

    New: Support [HTTP 101] responses with Response.socket. This mechanism is only supported on\nHTTP/1.1. We also reimplemented our websocket client to use this new mechanism.

    \n
  • \n
  • \n

    New: The okhttp-zstd module negotiates [Zstandard (zstd)][zstd] compression with servers that\nsupport it. It integrates a new (unstable) [ZSTD-KMP] library, also from Square. Enable it like\nthis:

    \n
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 0960b47 Prepare for release 5.3.0.
  • \n
  • bfb24eb Support Request Bodies on HTTP1.1 Connection Upgrades (#9159)
  • \n
  • cf4a864 Update Gradle to v9.2.0 (#9171)
  • \n
  • 4e7dbec Update dependency com.puppycrawl.tools:checkstyle to v12.1.1 (#9169)
  • \n
  • 0470853 Add tags to calls, including computable tags (#9168)
  • \n
  • 2b70b39 Catch UnsatisfiedLinkError in AndroidLog (#9137)
  • \n
  • 3573555 Update dependency com.github.jnr:jnr-unixsocket to v0.38.24 (#9166)
  • \n
  • af8cf30 Update actions/upload-artifact action to v5 (#9167)
  • \n
  • 478e99c Build an computeIfAbsent() mechanism for tags (#9165)
  • \n
  • d393c86 Use Tags in okhttp3.Request (#9164)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.squareup.okhttp3:okhttp&package-manager=maven&previous-version=4.12.0&new-version=5.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2164/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2164/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2163", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2163/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2163/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2163/events", + "html_url": "https://github.com/hub4j/github-api/pull/2163", + "id": 3577021215, + "node_id": "PR_kwDOAAlq-s6w8RP2", + "number": 2163, + "title": "Chore(deps): Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.11.2 to 3.12.0", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-11-01T02:01:00Z", + "updated_at": "2025-11-26T17:03:35Z", + "closed_at": "2025-11-26T17:03:26Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2163", + "html_url": "https://github.com/hub4j/github-api/pull/2163", + "diff_url": "https://github.com/hub4j/github-api/pull/2163.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2163.patch", + "merged_at": "2025-11-26T17:03:26Z" + }, + "body": "Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.11.2 to 3.12.0.\n
\nRelease notes\n

Sourced from org.apache.maven.plugins:maven-javadoc-plugin's releases.

\n
\n

3.12.0

\n\n

:boom: Breaking changes

\n\n

🐛 Bug Fixes

\n\n

👻 Maintenance

\n\n

📦 Dependency updates

\n\n

3.11.3

\n\n

🚨 Removed

\n
    \n
  • Remove workaround for long patched CVE in javadoc (#388) @​elharo
  • \n
\n

🚀 New features and improvements

\n\n

🐛 Bug Fixes

\n
    \n
  • Make the legacyMode consistent (Filter out all of the module-info.java files in legacy mode, do not use --source-path in legacy mode) (#1217) @​fridrich
  • \n
  • [MJAVADOC-826] - Don't try to modify project source roots (#358) @​oehme
  • \n
\n

📝 Documentation updates

\n\n

👻 Maintenance

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 2a06bed [maven-release-plugin] prepare release maven-javadoc-plugin-3.12.0
  • \n
  • a71ecf9 bump version 3.12.0-SNAPSHOT
  • \n
  • 88f2b71 [maven-release-plugin] prepare for next development iteration
  • \n
  • 7e18956 [maven-release-plugin] prepare release maven-javadoc-plugin-3.11.4
  • \n
  • c11b76c In legacyMode, don't use -sourcepath, unless excludePackageNames is not empty...
  • \n
  • bc9904b remove fix mojo (#1263)
  • \n
  • f310135 Fix package {...} does not exist in legacyMode (#1243)
  • \n
  • c8270f9 detectOfflineLinks is now false per default for all jar mojo issue #1258 ...
  • \n
  • 953e609 Delete flaky test (#1260)
  • \n
  • 2bba7a4 Bump org.codehaus.mojo:mrm-maven-plugin from 1.6.0 to 1.7.0
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.apache.maven.plugins:maven-javadoc-plugin&package-manager=maven&previous-version=3.11.2&new-version=3.12.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2163/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2163/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2162", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2162/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2162/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2162/events", + "html_url": "https://github.com/hub4j/github-api/pull/2162", + "id": 3577021147, + "node_id": "PR_kwDOAAlq-s6w8RPA", + "number": 2162, + "title": "Chore(deps): Bump com.github.spotbugs:spotbugs-maven-plugin from 4.9.3.0 to 4.9.8.1", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-11-01T02:00:56Z", + "updated_at": "2025-11-26T17:03:57Z", + "closed_at": "2025-11-26T17:03:45Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2162", + "html_url": "https://github.com/hub4j/github-api/pull/2162", + "diff_url": "https://github.com/hub4j/github-api/pull/2162.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2162.patch", + "merged_at": "2025-11-26T17:03:45Z" + }, + "body": "Bumps [com.github.spotbugs:spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin) from 4.9.3.0 to 4.9.8.1.\n
\nRelease notes\n

Sourced from com.github.spotbugs:spotbugs-maven-plugin's releases.

\n
\n

Spotbugs Maven Plugin 4.9.8.1

\n

Bug fix with SpotbugsInfo.EOF error (was meant to be SpotbugsInfo.EOL).

\n

Spotbugs Maven Plugin 4.9.8.0

\n

Bug fix release supporting spotbugs 4.9.8.

\n

Spotbugs Maven Plugin 4.9.7.0

\n\n

Spotbugs Maven Plugin 4.9.6.0

\n
    \n
  • Supports spotbugs 4.9.6
  • \n
  • note: 4.9.5 had a defect with detection of jakarta in servlets that was unexpected and quickly patched for this release.
  • \n
\n

Spotbugs Maven Plugin 4.9.5.0

\n
    \n
  • Support spotbugs 4.9.5
  • \n
\n

Spotbugs Maven Plugin 4.9.4.2

\n

Consumer

\n
    \n
  • Add support for 'chooseVisitors'
  • \n
  • Minor code cleanup
  • \n
  • Still supports spotbugs 4.9.4
  • \n
\n

Producer

\n
    \n
  • Remove add opens from jvm.config as no longer needed
  • \n
\n

Spotbugs Maven Plugin 4.9.4.1

\n

Consumer

\n
    \n
  • Cleanup readme to better support plugin
  • \n
  • Dropped direct usage of plexus utils and commons io
  • \n
  • Groovy 5 now run engine
  • \n
  • Correct issue since 4.9.2.0 resulting in most runs getting spotbugs.html file incorrectly. This has been refactored to restore doxia 1 overrides to produce xml report only when not running in site lifecycle
  • \n
  • Correct defects with handling of various files on disk such as exclusion filters that were introduced into 4.9.4.0. Integration tests have been applied to prevent future regression.
  • \n
  • Commons io fileutils replaced by files.walk with detailed output moved to debug collection only rather than all runs
  • \n
  • Normalization of path to linux style
  • \n
  • Any regex usage is now precompiled
  • \n
  • Use re-entrant lock for source indexer
  • \n
  • Correct locale usage to use default if not given
  • \n
  • Block doctype and XXE when processing xml files
  • \n
  • Cleanup some fields from resources and in code never used
  • \n
\n

Producer

\n
    \n
  • Pin versions of github actions tools
  • \n
  • Run maven 3.6.3 integration test on windows to get more broad support
  • \n
  • Run maven integration test on mac to get more broad support
  • \n
  • Maven 4 integration tests will continue on linux
  • \n
  • Fix maven wrapper perceived path traversal issue
  • \n
  • Corrections to invoker to re-establish integration test verification's
  • \n
  • Fix bugs in integration tests
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 8eb6aa9 [maven-release-plugin] prepare release spotbugs-maven-plugin-4.9.8.1
  • \n
  • 4ff769f Fix: Correct reported issue with 'EOF' where it should be 'EOL'
  • \n
  • c210782 Merge pull request #1241 from spotbugs/renovate/execpluginversion
  • \n
  • 662fa1e Update dependency org.codehaus.mojo:exec-maven-plugin to v3.6.2
  • \n
  • 8cd9648 [maven-release-plugin] prepare for next development iteration
  • \n
  • d8d4c69 [maven-release-plugin] prepare release spotbugs-maven-plugin-4.9.8.0
  • \n
  • 52cdf26 [ci] Add note about pom entries to update for testing upstream master
  • \n
  • 9b8e387 [pom] Prepare for 4.9.8 release
  • \n
  • 0a8ac5a Merge pull request #1238 from spotbugs/renovate/github-codeql-action-digest
  • \n
  • 4b02d8d Merge pull request #1240 from spotbugs/renovate/spotbugs.version
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.github.spotbugs:spotbugs-maven-plugin&package-manager=maven&previous-version=4.9.3.0&new-version=4.9.8.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2162/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2162/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2161", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2161/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2161/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2161/events", + "html_url": "https://github.com/hub4j/github-api/pull/2161", + "id": 3577021087, + "node_id": "PR_kwDOAAlq-s6w8RON", + "number": 2161, + "title": "Chore(deps): Bump actions/upload-artifact from 4 to 5", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", + "default": false, + "description": "Pull requests that update Github_actions code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-11-01T02:00:52Z", + "updated_at": "2025-11-12T23:02:35Z", + "closed_at": "2025-11-12T23:01:16Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2161", + "html_url": "https://github.com/hub4j/github-api/pull/2161", + "diff_url": "https://github.com/hub4j/github-api/pull/2161.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2161.patch", + "merged_at": "2025-11-12T23:01:16Z" + }, + "body": "Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.\n
\nRelease notes\n

Sourced from actions/upload-artifact's releases.

\n
\n

v5.0.0

\n

What's Changed

\n

BREAKING CHANGE: this update supports Node v24.x. This is not a breaking change per-se but we're treating it as such.

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/actions/upload-artifact/compare/v4...v5.0.0

\n

v4.6.2

\n

What's Changed

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/actions/upload-artifact/compare/v4...v4.6.2

\n

v4.6.1

\n

What's Changed

\n\n

Full Changelog: https://github.com/actions/upload-artifact/compare/v4...v4.6.1

\n

v4.6.0

\n

What's Changed

\n\n

Full Changelog: https://github.com/actions/upload-artifact/compare/v4...v4.6.0

\n

v4.5.0

\n

What's Changed

\n\n

New Contributors

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 330a01c Merge pull request #734 from actions/danwkennedy/prepare-5.0.0
  • \n
  • 03f2824 Update github.dep.yml
  • \n
  • 905a1ec Prepare v5.0.0
  • \n
  • 2d9f9cd Merge pull request #725 from patrikpolyak/patch-1
  • \n
  • 9687587 Merge branch 'main' into patch-1
  • \n
  • 2848b2c Merge pull request #727 from danwkennedy/patch-1
  • \n
  • 9b51177 Spell out the first use of GHES
  • \n
  • cd231ca Update GHES guidance to include reference to Node 20 version
  • \n
  • de65e23 Merge pull request #712 from actions/nebuk89-patch-1
  • \n
  • 8747d8c Update README.md
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=4&new-version=5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2161/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2161/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2160", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2160/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2160/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2160/events", + "html_url": "https://github.com/hub4j/github-api/pull/2160", + "id": 3577021065, + "node_id": "PR_kwDOAAlq-s6w8RN7", + "number": 2160, + "title": "Chore(deps-dev): Bump com.google.code.gson:gson from 2.12.1 to 2.13.2", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-11-01T02:00:51Z", + "updated_at": "2025-11-12T23:03:51Z", + "closed_at": "2025-11-12T23:02:36Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2160", + "html_url": "https://github.com/hub4j/github-api/pull/2160", + "diff_url": "https://github.com/hub4j/github-api/pull/2160.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2160.patch", + "merged_at": "2025-11-12T23:02:36Z" }, - "body": "Bumps `spring.boot.version` from 3.4.5 to 4.0.0.\nUpdates `org.springframework.boot:spring-boot-dependencies` from 3.4.5 to 4.0.0\n
\nRelease notes\n

Sourced from org.springframework.boot:spring-boot-dependencies's releases.

\n
\n

v4.0.0

\n

Full release notes for Spring Boot 4.0 are available on the wiki. There is also a migration guide to help you upgrade from Spring Boot 3.5.

\n

:star: New Features

\n
    \n
  • Change tomcat and jetty runtime modules to starters #48175
  • \n
  • Rename spring-boot-kotlin-serialization to align with the name of the Kotlinx module that it pulls in #48076
  • \n
\n

:lady_beetle: Bug Fixes

\n
    \n
  • Error properties are a general web concern and should not be located beneath server.* #48201
  • \n
  • With both Jackson 2 and 3 on the classpath, @JsonTest fails due to duplicate jacksonTesterFactoryBean #48198
  • \n
  • Gradle war task does not exclude starter POMs from lib-provided #48197
  • \n
  • spring.test.webclient.mockrestserviceserver.enabled is not aligned with its module's name #48193
  • \n
  • SslMeterBinder doesn't register metrics for dynamically added bundles if no bundles exist at bind time #48182
  • \n
  • Properties bound in the child management context ignore the parent's environment prefix #48177
  • \n
  • ssl.chain.expiry metrics doesn't update for dynamically registered SSL bundles #48171
  • \n
  • Starter for spring-boot-micrometer-metrics is missing #48161
  • \n
  • Elasticsearch client's sniffer functionality should not be enabled by default #48155
  • \n
  • spring-boot-starter-elasticsearch should depend on elasticsearch-java #48141
  • \n
  • Auto-configuration exclusions are checked using a different class loader to the one that loads auto-configuration classes #48132
  • \n
  • New arm64 macbooks fail to bootBuildImage due to incorrect platform image #48128
  • \n
  • Properties for configuring an isolated JsonMapper or ObjectMapper are incorrectly named #48116
  • \n
  • Buildpack fails with recent Docker installs due to hardcoded version in URL #48103
  • \n
  • Image building may fail when specifying a platform if an image has already been built with a different platform #48099
  • \n
  • Default values of Kotlinx Serialization JSON configuration properties are not documented #48097
  • \n
  • Custom XML converters should override defaults in HttpMessageConverters #48096
  • \n
  • Kotlin serialization is used too aggressively when other JSON libraries are available #48070
  • \n
  • PortInUseException incorrectly thrown on failure to bind port due to Netty IP misconfiguration #48059
  • \n
  • Auto-configured JCacheMetrics cannot be customized #48057
  • \n
  • WebSecurityCustomizer beans are excluded by WebMvcTest #48055
  • \n
  • Deprecated EnvironmentPostProcessor does not resolve arguments #48047
  • \n
  • RetryPolicySettings should refer to maxRetries, not maxAttempts #48023
  • \n
  • Devtools Restarter does not work with a parameterless main method #47996
  • \n
  • Dependency management for Kafka should not manage Scala 2.12 libraries #47991
  • \n
  • spring-boot-mail should depend on jakarta.mail:jakarta.mail-api and org.eclipse.angus:angus-mail instead of org.eclipse.angus:jakarta.mail #47983
  • \n
  • spring-boot-starter-data-mongodb-reactive has dependency on reactor-test #47982
  • \n
  • Support for ReactiveElasticsearchClient is in the wrong module #47848
  • \n
\n

:notebook_with_decorative_cover: Documentation

\n
    \n
  • Removed property spring.test.webclient.register-rest-template is still documented #48199
  • \n
  • Mention support for detecting AWS ECS in "Deploying to the Cloud" #48170
  • \n
  • Revise AWS section of "Deploying to the Cloud" in reference manual #48163
  • \n
  • Fix typo in PortInUseException Javadoc #48134
  • \n
  • Correct section about required setters in "Type-safe Configuration Properties" #48131
  • \n
  • Use since attribute in configuration properties deprecation consistently #48122
  • \n
  • Document EndpointJsonMapper and management.endpoints.jackson.isolated-json-mapper #48115
  • \n
  • Document support for configuring servlet context init parameters using properties #48112
  • \n
  • Some configuration properties are not documented in the appendix #48095
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1c0e08b Release v4.0.0
  • \n
  • 3487928 Merge branch '3.5.x'
  • \n
  • 29b8e96 Switch make-default in preparation for Spring Boot 4.0.0
  • \n
  • 88da0dd Merge branch '3.5.x'
  • \n
  • 56feeaa Next development version (v3.5.9-SNAPSHOT)
  • \n
  • 3becdc7 Move server.error properties to spring.web.error
  • \n
  • 2b30632 Merge branch '3.5.x'
  • \n
  • 4f03b44 Merge branch '3.4.x' into 3.5.x
  • \n
  • 3d15c13 Next development version (v3.4.13-SNAPSHOT)
  • \n
  • dc140df Upgrade to Spring Framework 7.0.1
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\nUpdates `org.springframework.boot:spring-boot-maven-plugin` from 3.4.5 to 4.0.0\n
\nRelease notes\n

Sourced from org.springframework.boot:spring-boot-maven-plugin's releases.

\n
\n

v4.0.0

\n

Full release notes for Spring Boot 4.0 are available on the wiki. There is also a migration guide to help you upgrade from Spring Boot 3.5.

\n

:star: New Features

\n
    \n
  • Change tomcat and jetty runtime modules to starters #48175
  • \n
  • Rename spring-boot-kotlin-serialization to align with the name of the Kotlinx module that it pulls in #48076
  • \n
\n

:lady_beetle: Bug Fixes

\n
    \n
  • Error properties are a general web concern and should not be located beneath server.* #48201
  • \n
  • With both Jackson 2 and 3 on the classpath, @JsonTest fails due to duplicate jacksonTesterFactoryBean #48198
  • \n
  • Gradle war task does not exclude starter POMs from lib-provided #48197
  • \n
  • spring.test.webclient.mockrestserviceserver.enabled is not aligned with its module's name #48193
  • \n
  • SslMeterBinder doesn't register metrics for dynamically added bundles if no bundles exist at bind time #48182
  • \n
  • Properties bound in the child management context ignore the parent's environment prefix #48177
  • \n
  • ssl.chain.expiry metrics doesn't update for dynamically registered SSL bundles #48171
  • \n
  • Starter for spring-boot-micrometer-metrics is missing #48161
  • \n
  • Elasticsearch client's sniffer functionality should not be enabled by default #48155
  • \n
  • spring-boot-starter-elasticsearch should depend on elasticsearch-java #48141
  • \n
  • Auto-configuration exclusions are checked using a different class loader to the one that loads auto-configuration classes #48132
  • \n
  • New arm64 macbooks fail to bootBuildImage due to incorrect platform image #48128
  • \n
  • Properties for configuring an isolated JsonMapper or ObjectMapper are incorrectly named #48116
  • \n
  • Buildpack fails with recent Docker installs due to hardcoded version in URL #48103
  • \n
  • Image building may fail when specifying a platform if an image has already been built with a different platform #48099
  • \n
  • Default values of Kotlinx Serialization JSON configuration properties are not documented #48097
  • \n
  • Custom XML converters should override defaults in HttpMessageConverters #48096
  • \n
  • Kotlin serialization is used too aggressively when other JSON libraries are available #48070
  • \n
  • PortInUseException incorrectly thrown on failure to bind port due to Netty IP misconfiguration #48059
  • \n
  • Auto-configured JCacheMetrics cannot be customized #48057
  • \n
  • WebSecurityCustomizer beans are excluded by WebMvcTest #48055
  • \n
  • Deprecated EnvironmentPostProcessor does not resolve arguments #48047
  • \n
  • RetryPolicySettings should refer to maxRetries, not maxAttempts #48023
  • \n
  • Devtools Restarter does not work with a parameterless main method #47996
  • \n
  • Dependency management for Kafka should not manage Scala 2.12 libraries #47991
  • \n
  • spring-boot-mail should depend on jakarta.mail:jakarta.mail-api and org.eclipse.angus:angus-mail instead of org.eclipse.angus:jakarta.mail #47983
  • \n
  • spring-boot-starter-data-mongodb-reactive has dependency on reactor-test #47982
  • \n
  • Support for ReactiveElasticsearchClient is in the wrong module #47848
  • \n
\n

:notebook_with_decorative_cover: Documentation

\n
    \n
  • Removed property spring.test.webclient.register-rest-template is still documented #48199
  • \n
  • Mention support for detecting AWS ECS in "Deploying to the Cloud" #48170
  • \n
  • Revise AWS section of "Deploying to the Cloud" in reference manual #48163
  • \n
  • Fix typo in PortInUseException Javadoc #48134
  • \n
  • Correct section about required setters in "Type-safe Configuration Properties" #48131
  • \n
  • Use since attribute in configuration properties deprecation consistently #48122
  • \n
  • Document EndpointJsonMapper and management.endpoints.jackson.isolated-json-mapper #48115
  • \n
  • Document support for configuring servlet context init parameters using properties #48112
  • \n
  • Some configuration properties are not documented in the appendix #48095
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1c0e08b Release v4.0.0
  • \n
  • 3487928 Merge branch '3.5.x'
  • \n
  • 29b8e96 Switch make-default in preparation for Spring Boot 4.0.0
  • \n
  • 88da0dd Merge branch '3.5.x'
  • \n
  • 56feeaa Next development version (v3.5.9-SNAPSHOT)
  • \n
  • 3becdc7 Move server.error properties to spring.web.error
  • \n
  • 2b30632 Merge branch '3.5.x'
  • \n
  • 4f03b44 Merge branch '3.4.x' into 3.5.x
  • \n
  • 3d15c13 Next development version (v3.4.13-SNAPSHOT)
  • \n
  • dc140df Upgrade to Spring Framework 7.0.1
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "body": "Bumps [com.google.code.gson:gson](https://github.com/google/gson) from 2.12.1 to 2.13.2.\n
\nRelease notes\n

Sourced from com.google.code.gson:gson's releases.

\n
\n

Gson 2.13.2

\n

The main changes in this release are just newer dependencies.

\n

What's Changed

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/google/gson/compare/gson-parent-2.13.1...gson-parent-2.13.2

\n

Gson 2.13.1

\n

What's Changed

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/google/gson/compare/gson-parent-2.13.0...gson-parent-2.13.1

\n

Gson 2.13.0

\n

What's Changed

\n
    \n
  • \n

    A bug in deserializing collections has been fixed. Previously, if you did something like this:

    \n
    gson.fromJson(jsonString, new TypeToken<ImmutableList<String>>() {})\n
    \n

    then the inferred type would be ImmutableList<String>, but Gson actually gave you an ArrayList<String>. Usually that would lead to an immediate ClassCastException, but in some circumstances the code might sometimes succeed despite the wrong type. Now you will see an exception like this:

    \n
    com.google.gson.JsonIOException: Abstract classes can't be instantiated!\nAdjust the R8 configuration or register an InstanceCreator or a TypeAdapter for this type.\nClass name: com.google.common.collect.ImmutableList\n
    \n

    because Gson now really is trying to create an ImmutableList through its constructor, but that isn't possible.\nEither change the requested type (in the TypeToken) to List<String>, or register a TypeAdapter or JsonDeserializer for ImmutableList.

    \n
  • \n
  • \n

    The internal classes $Gson$Types and $Gson$Preconditions have been renamed to remove the $ characters. Since these are internal classes (as signaled not only by the package name but by the $ characters), client code should not be affected. If your code was depending on these classes then we suggest making a copy of the class (subject to the license) rather than depending on the new names.

    \n
  • \n
\n

Full Changelog: https://github.com/google/gson/compare/gson-parent-2.12.1...gson-parent-2.13.0

\n
\n
\n
\nCommits\n
    \n
  • 686fad7 [maven-release-plugin] prepare release gson-parent-2.13.2
  • \n
  • c2d252a Switch to using central-publishing-maven-plugin. (#2900)
  • \n
  • 69cb755 Bump the github-actions group with 5 updates (#2894)
  • \n
  • ea552c2 Bump the maven group across 1 directory with 3 updates (#2898)
  • \n
  • fdc616d Set top-level permissions for CodeQL workflow (#2889)
  • \n
  • 9334715 Create scorecard.yml (#2888)
  • \n
  • f7de5c2 Bump the maven group with 8 updates (#2885)
  • \n
  • 8c23cd3 Update sources to satisfy a new Error Prone check. (#2887)
  • \n
  • 5eab3ed Bump the github-actions group with 2 updates (#2886)
  • \n
  • 5f5c200 Bump the maven group across 1 directory with 10 updates (#2872)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.google.code.gson:gson&package-manager=maven&previous-version=2.12.1&new-version=2.13.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2168/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2160/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -371,22 +1792,22 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2160/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2171", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2159", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/events", - "html_url": "https://github.com/hub4j/github-api/pull/2171", - "id": 3678910531, - "node_id": "PR_kwDOAAlq-s62PDmc", - "number": 2171, - "title": "Chore(deps): Bump com.squareup.okhttp3:okhttp from 4.12.0 to 5.3.2", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2159/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2159/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2159/events", + "html_url": "https://github.com/hub4j/github-api/pull/2159", + "id": 3577021033, + "node_id": "PR_kwDOAAlq-s6w8RNf", + "number": 2159, + "title": "Chore(deps): Bump github/codeql-action from 3 to 4", "user": { "login": "dependabot[bot]", "id": 49699333, @@ -419,38 +1840,38 @@ "description": "Pull requests that update a dependency file" }, { - "id": 2156391625, - "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", - "url": "https://api.github.com/repos/hub4j/github-api/labels/java", - "name": "java", - "color": "ffa221", + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", "default": false, - "description": "Pull requests that update Java code" + "description": "Pull requests that update Github_actions code" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-12-01T02:11:39Z", - "updated_at": "2026-01-01T02:00:03Z", - "closed_at": null, + "comments": 1, + "created_at": "2025-11-01T02:00:49Z", + "updated_at": "2025-11-12T23:01:40Z", + "closed_at": "2025-11-12T23:00:52Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2171", - "html_url": "https://github.com/hub4j/github-api/pull/2171", - "diff_url": "https://github.com/hub4j/github-api/pull/2171.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2171.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2159", + "html_url": "https://github.com/hub4j/github-api/pull/2159", + "diff_url": "https://github.com/hub4j/github-api/pull/2159.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2159.patch", + "merged_at": "2025-11-12T23:00:52Z" }, - "body": "Bumps [com.squareup.okhttp3:okhttp](https://github.com/square/okhttp) from 4.12.0 to 5.3.2.\n
\nChangelog\n

Sourced from com.squareup.okhttp3:okhttp's changelog.

\n
\n

Version 5.3.2

\n

2025-11-18

\n
    \n
  • \n

    Fix: Don't delay triggering timeouts. In Okio 3.16.0 we introduced a regression that caused\ntimeouts to fire later than they were supposed to.

    \n
  • \n
  • \n

    Upgrade: [Okio 3.16.4][okio_3_16_4].

    \n
  • \n
\n

Version 5.3.1

\n

2025-11-16

\n

This release is the same as 5.3.0. Okio 3.16.3 didn't have a necessary fix!

\n
    \n
  • Upgrade: [Okio 3.16.3][okio_3_16_3].
  • \n
\n

Version 5.3.0

\n

2025-10-30

\n
    \n
  • \n

    New: Add tags to Call, including computable tags. Use this to attach application-specific\nmetadata to a Call in an EventListener or Interceptor. The tag can be read in any other\nEventListener or Interceptor.

    \n
      override fun intercept(chain: Interceptor.Chain): Response {\n    chain.call().tag(MyAnalyticsTag::class) {\n      MyAnalyticsTag(...)\n    }\n
    return chain.proceed(chain.request())\n
    \n

    }\n

    \n
  • \n
  • \n

    New: Support request bodies on HTTP/1.1 connection upgrades.

    \n
  • \n
  • \n

    New: EventListener.plus() makes it easier to observe events in multiple listeners.

    \n
  • \n
  • \n

    Fix: Don't spam logs with ‘Method isLoggable in android.util.Log not mocked.’ when using\nOkHttp in Robolectric and Paparazzi tests.

    \n
  • \n
  • \n

    Upgrade: [Kotlin 2.2.21][kotlin_2_2_21].

    \n
  • \n
  • \n

    Upgrade: [Okio 3.16.2][okio_3_16_2].

    \n
  • \n
  • \n

    Upgrade: [ZSTD-KMP 0.4.0][zstd_kmp_0_4_0]. This update fixes a bug that caused APKs to fail\n[16 KB ELF alignment checks][elf_alignment].

    \n
  • \n
\n

Version 5.2.3

\n

2025-11-18

\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.squareup.okhttp3:okhttp&package-manager=maven&previous-version=4.12.0&new-version=5.3.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "body": "Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4.\n
\nRelease notes\n

Sourced from github/codeql-action's releases.

\n
\n

v3.31.2

\n

CodeQL Action Changelog

\n

See the releases page for the relevant changes to the CodeQL CLI and language packs.

\n

3.31.2 - 30 Oct 2025

\n

No user facing changes.

\n

See the full CHANGELOG.md for more information.

\n

v3.31.1

\n

CodeQL Action Changelog

\n

See the releases page for the relevant changes to the CodeQL CLI and language packs.

\n

3.31.1 - 30 Oct 2025

\n
    \n
  • The add-snippets input has been removed from the analyze action. This input has been deprecated since CodeQL Action 3.26.4 in August 2024 when this removal was announced.
  • \n
\n

See the full CHANGELOG.md for more information.

\n

v3.31.0

\n

CodeQL Action Changelog

\n

See the releases page for the relevant changes to the CodeQL CLI and language packs.

\n

3.31.0 - 24 Oct 2025

\n
    \n
  • Bump minimum CodeQL bundle version to 2.17.6. #3223
  • \n
  • When SARIF files are uploaded by the analyze or upload-sarif actions, the CodeQL Action automatically performs post-processing steps to prepare the data for the upload. Previously, these post-processing steps were only performed before an upload took place. We are now changing this so that the post-processing steps will always be performed, even when the SARIF files are not uploaded. This does not change anything for the upload-sarif action. For analyze, this may affect Advanced Setup for CodeQL users who specify a value other than always for the upload input. #3222
  • \n
\n

See the full CHANGELOG.md for more information.

\n

v3.30.9

\n

CodeQL Action Changelog

\n

See the releases page for the relevant changes to the CodeQL CLI and language packs.

\n

3.30.9 - 17 Oct 2025

\n
    \n
  • Update default CodeQL bundle version to 2.23.3. #3205
  • \n
  • Experimental: A new setup-codeql action has been added which is similar to init, except it only installs the CodeQL CLI and does not initialize a database. Do not use this in production as it is part of an internal experiment and subject to change at any time. #3204
  • \n
\n

See the full CHANGELOG.md for more information.

\n

v3.30.8

\n

CodeQL Action Changelog

\n

See the releases page for the relevant changes to the CodeQL CLI and language packs.

\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from github/codeql-action's changelog.

\n
\n

4.31.2 - 30 Oct 2025

\n

No user facing changes.

\n

4.31.1 - 30 Oct 2025

\n
    \n
  • The add-snippets input has been removed from the analyze action. This input has been deprecated since CodeQL Action 3.26.4 in August 2024 when this removal was announced.
  • \n
\n

4.31.0 - 24 Oct 2025

\n
    \n
  • Bump minimum CodeQL bundle version to 2.17.6. #3223
  • \n
  • When SARIF files are uploaded by the analyze or upload-sarif actions, the CodeQL Action automatically performs post-processing steps to prepare the data for the upload. Previously, these post-processing steps were only performed before an upload took place. We are now changing this so that the post-processing steps will always be performed, even when the SARIF files are not uploaded. This does not change anything for the upload-sarif action. For analyze, this may affect Advanced Setup for CodeQL users who specify a value other than always for the upload input. #3222
  • \n
\n

4.30.9 - 17 Oct 2025

\n
    \n
  • Update default CodeQL bundle version to 2.23.3. #3205
  • \n
  • Experimental: A new setup-codeql action has been added which is similar to init, except it only installs the CodeQL CLI and does not initialize a database. Do not use this in production as it is part of an internal experiment and subject to change at any time. #3204
  • \n
\n

4.30.8 - 10 Oct 2025

\n

No user facing changes.

\n

4.30.7 - 06 Oct 2025

\n
    \n
  • [v4+ only] The CodeQL Action now runs on Node.js v24. #3169
  • \n
\n

3.30.6 - 02 Oct 2025

\n
    \n
  • Update default CodeQL bundle version to 2.23.2. #3168
  • \n
\n

3.30.5 - 26 Sep 2025

\n
    \n
  • We fixed a bug that was introduced in 3.30.4 with upload-sarif which resulted in files without a .sarif extension not getting uploaded. #3160
  • \n
\n

3.30.4 - 25 Sep 2025

\n
    \n
  • We have improved the CodeQL Action's ability to validate that the workflow it is used in does not use different versions of the CodeQL Action for different workflow steps. Mixing different versions of the CodeQL Action in the same workflow is unsupported and can lead to unpredictable results. A warning will now be emitted from the codeql-action/init step if different versions of the CodeQL Action are detected in the workflow file. Additionally, an error will now be thrown by the other CodeQL Action steps if they load a configuration file that was generated by a different version of the codeql-action/init step. #3099 and #3100
  • \n
  • We added support for reducing the size of dependency caches for Java analyses, which will reduce cache usage and speed up workflows. This will be enabled automatically at a later time. #3107
  • \n
  • You can now run the latest CodeQL nightly bundle by passing tools: nightly to the init action. In general, the nightly bundle is unstable and we only recommend running it when directed by GitHub staff. #3130
  • \n
  • Update default CodeQL bundle version to 2.23.1. #3118
  • \n
\n

3.30.3 - 10 Sep 2025

\n

No user facing changes.

\n

3.30.2 - 09 Sep 2025

\n
    \n
  • Fixed a bug which could cause language autodetection to fail. #3084
  • \n
  • Experimental: The quality-queries input that was added in 3.29.2 as part of an internal experiment is now deprecated and will be removed in an upcoming version of the CodeQL Action. It has been superseded by a new analysis-kinds input, which is part of the same internal experiment. Do not use this in production as it is subject to change at any time. #3064
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 74c8748 Update analyze/action.yml
  • \n
  • 34c50c1 Merge pull request #3251 from github/mbg/user-error/enablement
  • \n
  • 4ae68af Warn if the add-snippets input is used
  • \n
  • 52a7bd7 Check for 403 status
  • \n
  • 194ba0e Make error message tests less brittle
  • \n
  • 53acf0b Turn enablement errors into configuration errors
  • \n
  • ac9aeee Merge pull request #3249 from github/henrymercer/api-logging
  • \n
  • d49e837 Merge branch 'main' into henrymercer/api-logging
  • \n
  • 3d988b2 Pass minimal copy of core
  • \n
  • 8cc18ac Merge pull request #3250 from github/henrymercer/prefer-fs-delete
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3&new-version=4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2171/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2159/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -461,67 +1882,86 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2159/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2153", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2158", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/events", - "html_url": "https://github.com/hub4j/github-api/pull/2153", - "id": 3547050854, - "node_id": "PR_kwDOAAlq-s6vY_6j", - "number": 2153, - "title": "(Spike) Move v2 to new package. ", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2158/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2158/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2158/events", + "html_url": "https://github.com/hub4j/github-api/pull/2158", + "id": 3577020646, + "node_id": "PR_kwDOAAlq-s6w8RHt", + "number": 2158, + "title": "Chore(deps): Bump stefanzweifel/git-auto-commit-action from 6 to 7", "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", "user_view_type": "public", "site_admin": false }, - "labels": [], - "state": "open", + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", + "default": false, + "description": "Pull requests that update Github_actions code" + } + ], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 0, - "created_at": "2025-10-24T00:06:08Z", - "updated_at": "2025-10-24T00:06:08Z", - "closed_at": null, - "author_association": "MEMBER", + "created_at": "2025-11-01T02:00:43Z", + "updated_at": "2026-01-23T19:01:10Z", + "closed_at": "2026-01-23T19:01:02Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2153", - "html_url": "https://github.com/hub4j/github-api/pull/2153", - "diff_url": "https://github.com/hub4j/github-api/pull/2153.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2153.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2158", + "html_url": "https://github.com/hub4j/github-api/pull/2158", + "diff_url": "https://github.com/hub4j/github-api/pull/2158.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2158.patch", + "merged_at": "2026-01-23T19:01:02Z" }, - "body": "# Description\r\n\r\nThis is spike considering what it would look like if we published each new version in it's own package. \r\nThe most complex code should be move to internal for reuse in both v1 and v2 public apis. \r\n\r\nMove most v2 to new package. \r\nThen pull rc1 back into existing package. \r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "body": "Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 6 to 7.\n
\nRelease notes\n

Sourced from stefanzweifel/git-auto-commit-action's releases.

\n
\n

v7.0.0

\n

Added

\n\n

Changed

\n\n

Dependency Updates

\n\n

v6.0.1

\n

Fixed

\n\n
\n
\n
\nChangelog\n

Sourced from stefanzweifel/git-auto-commit-action's changelog.

\n
\n

Changelog

\n

All notable changes to this project will be documented in this file.

\n

The format is based on Keep a Changelog\nand this project adheres to Semantic Versioning.

\n

Unreleased

\n
\n

TBD

\n
\n

v7.0.0 - 2025-10-12

\n

Added

\n\n

Changed

\n\n

Dependency Updates

\n\n

v6.0.1 - 2025-06-11

\n

Fixed

\n\n

v6.0.0 - 2025-06-10

\n

Added

\n
    \n
  • Throw error early if repository is in a detached state (#357)
  • \n
\n

Fixed

\n\n

Removed

\n
    \n
  • Remove support for create_branch, skip_checkout, skip_Fetch (#314)
  • \n
\n

v5.2.0 - 2025-04-19

\n

Added

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 28e16e8 Release preparations for v7 (#394)
  • \n
  • 698fd76 Merge pull request #391 from EliasBoulharts/custom-tag-message
  • \n
  • c40819a Update README
  • \n
  • d7ee275 Change internal variable names
  • \n
  • e8684eb Fix Tests
  • \n
  • 1949701 Merge branch 'master' into pr/391
  • \n
  • a88dc49 Merge pull request #388 from stefanzweifel/v7-next
  • \n
  • a531dec Merge pull request #386 from stefanzweifel/dependabot/github_actions/actions/...
  • \n
  • acbe8b1 Merge pull request #393 from stefanzweifel/v7-warn-detached-head
  • \n
  • d185485 Enable Detached State Check
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=stefanzweifel/git-auto-commit-action&package-manager=github_actions&previous-version=6&new-version=7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2153/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2158/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -532,67 +1972,86 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2158/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2146", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2157", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/events", - "html_url": "https://github.com/hub4j/github-api/pull/2146", - "id": 3453632014, - "node_id": "PR_kwDOAAlq-s6qgk4K", - "number": 2146, - "title": "[feat] Add support for the device authentication flow for github apps", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2157/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2157/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2157/events", + "html_url": "https://github.com/hub4j/github-api/pull/2157", + "id": 3577020608, + "node_id": "PR_kwDOAAlq-s6w8RHN", + "number": 2157, + "title": "Chore(deps): Bump actions/download-artifact from 5 to 6", "user": { - "login": "PierreBtz", - "id": 9881659, - "node_id": "MDQ6VXNlcjk4ODE2NTk=", - "avatar_url": "https://avatars.githubusercontent.com/u/9881659?v=4", + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/PierreBtz", - "html_url": "https://github.com/PierreBtz", - "followers_url": "https://api.github.com/users/PierreBtz/followers", - "following_url": "https://api.github.com/users/PierreBtz/following{/other_user}", - "gists_url": "https://api.github.com/users/PierreBtz/gists{/gist_id}", - "starred_url": "https://api.github.com/users/PierreBtz/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/PierreBtz/subscriptions", - "organizations_url": "https://api.github.com/users/PierreBtz/orgs", - "repos_url": "https://api.github.com/users/PierreBtz/repos", - "events_url": "https://api.github.com/users/PierreBtz/events{/privacy}", - "received_events_url": "https://api.github.com/users/PierreBtz/received_events", - "type": "User", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", "user_view_type": "public", "site_admin": false }, - "labels": [], - "state": "open", + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", + "default": false, + "description": "Pull requests that update Github_actions code" + } + ], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-09-25T13:25:37Z", - "updated_at": "2025-09-26T09:05:45Z", - "closed_at": null, + "comments": 1, + "created_at": "2025-11-01T02:00:40Z", + "updated_at": "2025-11-12T23:00:14Z", + "closed_at": "2025-11-12T22:59:40Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, - "draft": true, + "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2146", - "html_url": "https://github.com/hub4j/github-api/pull/2146", - "diff_url": "https://github.com/hub4j/github-api/pull/2146.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2146.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2157", + "html_url": "https://github.com/hub4j/github-api/pull/2157", + "diff_url": "https://github.com/hub4j/github-api/pull/2157.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2157.patch", + "merged_at": "2025-11-12T22:59:40Z" }, - "body": "# Description\r\n\r\n*Opening as a draft since the tests are not ready and I have questions about them*\r\n\r\nThis PR provides support for the device authentication flow for github apps, as documented in https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app#using-the-device-flow-to-generate-a-user-access-token (access token generation) and here https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/refreshing-user-access-tokens#refreshing-a-user-access-token-with-a-refresh-token (refresh token).\r\n\r\nThis is needed when developing java CLIs that need to authenticate to GitHub through a GitHub application.\r\n\r\nReproducing here the documentation to help with the understanding:\r\n\r\n```\r\n In order to authenticate to GitHub as an user using the device flow of your GitHub App, you need to use the <<>>\r\n authentication provider that will take care of retrieving a user access token and refresh it when needed for you.\r\n You need to handle two things by yourself:\r\n 1. You need to provide a <<>> that will be called when a new user access token is retrieved (either on initial creation or on refresh).\r\n It is up to you to store the credential object securely the library does not take care of that.\r\n 2. You need to provide a <<>> that will be called when a user interaction is needed to complete the device flow.\r\n The library provides a basic implementation <<>> that will log the instructions to the console but you could imagine a more complex\r\n implementation that would for example open the user browser automatically (or call some automation that will input the information automatically for instance).\r\n\r\n Here is a complete example to get started:\r\n\r\n+-----+\r\n var clientId = \"\";\r\n var objectMapper = new ObjectMapper();\r\n objectMapper.registerModule(new JavaTimeModule());\r\n\r\n // for demo purpose only, this is not proper secret management!!!\r\n var appCredentialsFile = Path.of(\"/tmp/github-app-credentials.json\");\r\n DeviceFlowGithubAppCredentials appCredentials;\r\n if (Files.exists(appCredentialsFile)) {\r\n appCredentials = objectMapper.readValue(appCredentialsFile.toFile(), DeviceFlowGithubAppCredentials.class);\r\n } else {\r\n appCredentials = EMPTY_CREDENTIALS;\r\n }\r\n\r\n var gh = new GitHubBuilder().withAuthorizationProvider(\r\n new DeviceFlowGithubAppAuthorizationProvider(clientId, appCredentials, ac -> {\r\n // in this basic example, we serialize the credentials as json to a file\r\n // this is not proper secret management and you should probably use something more secure\r\n try {\r\n objectMapper.writeValue(appCredentialsFile.toFile(), ac);\r\n } catch (IOException e) {\r\n throw new RuntimeException(e);\r\n }\r\n }, new LoggerDeviceFlowGithubAppInputManager())).build();\r\n+-----+\r\n``` \r\n\r\nOpened questions I have:\r\n\r\n* I'm not too happy that the main class (`DeviceFlowGithubAppAuthorizationProvider`) cannot be in the authorization package (needs access to a package protected method).\r\n* I'm not too sure how to process with tests: I cannot use the recording method since the authorization process is not going through the api endpoints but through the UI ones (`https://github.com/...`). I didn't find anything in the base class test that would help with this. Also I have to use the `.setRawUrlPath(\"https://github.com/login/oauth/access_token\")` which cannot be intercepted as is obviously. This is not only a problem for tests but also for on prem Github and my current thinking is that I need to enrich the API and the testing framework to support a `uiUrl` that would be the equivalent of the `apiUrl` for the UI.\r\n\r\nSince this starts to widen the impact of this change I'm opening this draft to discuss the potential approaches before going further.\r\n\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "body": "Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 5 to 6.\n
\nRelease notes\n

Sourced from actions/download-artifact's releases.

\n
\n

v6.0.0

\n

What's Changed

\n

BREAKING CHANGE: this update supports Node v24.x. This is not a breaking change per-se but we're treating it as such.

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/actions/download-artifact/compare/v5...v6.0.0

\n
\n
\n
\nCommits\n
    \n
  • 018cc2c Merge pull request #438 from actions/danwkennedy/prepare-6.0.0
  • \n
  • 815651c Revert "Remove github.dep.yml"
  • \n
  • bb3a066 Remove github.dep.yml
  • \n
  • fa1ce46 Prepare v6.0.0
  • \n
  • 4a24838 Merge pull request #431 from danwkennedy/patch-1
  • \n
  • 5e3251c Readme: spell out the first use of GHES
  • \n
  • abefc31 Merge pull request #424 from actions/yacaovsnc/update_readme
  • \n
  • ac43a60 Update README with artifact extraction details
  • \n
  • de96f46 Merge pull request #417 from actions/yacaovsnc/update_readme
  • \n
  • 7993cb4 Remove migration guide for artifact download changes
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/download-artifact&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2146/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2157/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -603,22 +2062,22 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2157/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2099", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2152", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/events", - "html_url": "https://github.com/hub4j/github-api/pull/2099", - "id": 3037229321, - "node_id": "PR_kwDOAAlq-s6U0PLi", - "number": 2099, - "title": "Refactor pagination", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2152/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2152/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2152/events", + "html_url": "https://github.com/hub4j/github-api/pull/2152", + "id": 3546846920, + "node_id": "PR_kwDOAAlq-s6vYTSI", + "number": 2152, + "title": "Improve ArchUnit class name test", "user": { "login": "bitwiseman", "id": 1958953, @@ -641,110 +2100,29 @@ "site_admin": false }, "labels": [], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 1, - "created_at": "2025-05-03T07:23:17Z", - "updated_at": "2025-09-20T08:14:09Z", - "closed_at": null, + "created_at": "2025-10-23T22:37:24Z", + "updated_at": "2025-10-24T15:20:33Z", + "closed_at": "2025-10-24T15:20:20Z", "author_association": "MEMBER", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2099", - "html_url": "https://github.com/hub4j/github-api/pull/2099", - "diff_url": "https://github.com/hub4j/github-api/pull/2099.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2099.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2152", + "html_url": "https://github.com/hub4j/github-api/pull/2152", + "diff_url": "https://github.com/hub4j/github-api/pull/2152.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2152.patch", + "merged_at": "2025-10-24T15:20:20Z" }, "body": "# Description\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2099/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1986", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/events", - "html_url": "https://github.com/hub4j/github-api/pull/1986", - "id": 2697030696, - "node_id": "PR_kwDOAAlq-s6DSCb3", - "number": 1986, - "title": "initial feature add", - "user": { - "login": "gitPushPuppets", - "id": 49495486, - "node_id": "MDQ6VXNlcjQ5NDk1NDg2", - "avatar_url": "https://avatars.githubusercontent.com/u/49495486?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/gitPushPuppets", - "html_url": "https://github.com/gitPushPuppets", - "followers_url": "https://api.github.com/users/gitPushPuppets/followers", - "following_url": "https://api.github.com/users/gitPushPuppets/following{/other_user}", - "gists_url": "https://api.github.com/users/gitPushPuppets/gists{/gist_id}", - "starred_url": "https://api.github.com/users/gitPushPuppets/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/gitPushPuppets/subscriptions", - "organizations_url": "https://api.github.com/users/gitPushPuppets/orgs", - "repos_url": "https://api.github.com/users/gitPushPuppets/repos", - "events_url": "https://api.github.com/users/gitPushPuppets/events{/privacy}", - "received_events_url": "https://api.github.com/users/gitPushPuppets/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 4789870627, - "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", - "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", - "name": "work-abandoned", - "color": "000000", - "default": false, - "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2024-11-27T04:41:38Z", - "updated_at": "2025-09-04T14:41:30Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "draft": true, - "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/1986", - "html_url": "https://github.com/hub4j/github-api/pull/1986", - "diff_url": "https://github.com/hub4j/github-api/pull/1986.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/1986.patch", - "merged_at": null - }, - "body": "# Description\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1986/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2152/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -755,138 +2133,67 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2152/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2108", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2151", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/events", - "html_url": "https://github.com/hub4j/github-api/pull/2108", - "id": 3148050956, - "node_id": "PR_kwDOAAlq-s6ancHC", - "number": 2108, - "title": "Add missing properties to GHAsset and GHRelease", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2151/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2151/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2151/events", + "html_url": "https://github.com/hub4j/github-api/pull/2151", + "id": 3495810417, + "node_id": "PR_kwDOAAlq-s6suMRC", + "number": 2151, + "title": "Add DYNAMIC event type to GHEvent enum", "user": { - "login": "solonovamax", - "id": 46940694, - "node_id": "MDQ6VXNlcjQ2OTQwNjk0", - "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "login": "kkroner8451", + "id": 14809736, + "node_id": "MDQ6VXNlcjE0ODA5NzM2", + "avatar_url": "https://avatars.githubusercontent.com/u/14809736?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/solonovamax", - "html_url": "https://github.com/solonovamax", - "followers_url": "https://api.github.com/users/solonovamax/followers", - "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", - "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", - "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", - "organizations_url": "https://api.github.com/users/solonovamax/orgs", - "repos_url": "https://api.github.com/users/solonovamax/repos", - "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", - "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "url": "https://api.github.com/users/kkroner8451", + "html_url": "https://github.com/kkroner8451", + "followers_url": "https://api.github.com/users/kkroner8451/followers", + "following_url": "https://api.github.com/users/kkroner8451/following{/other_user}", + "gists_url": "https://api.github.com/users/kkroner8451/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kkroner8451/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kkroner8451/subscriptions", + "organizations_url": "https://api.github.com/users/kkroner8451/orgs", + "repos_url": "https://api.github.com/users/kkroner8451/repos", + "events_url": "https://api.github.com/users/kkroner8451/events{/privacy}", + "received_events_url": "https://api.github.com/users/kkroner8451/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 4, - "created_at": "2025-06-15T20:42:27Z", - "updated_at": "2025-07-30T16:23:40Z", - "closed_at": null, + "comments": 1, + "created_at": "2025-10-08T14:57:53Z", + "updated_at": "2025-10-23T00:51:40Z", + "closed_at": "2025-10-23T00:51:32Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2108", - "html_url": "https://github.com/hub4j/github-api/pull/2108", - "diff_url": "https://github.com/hub4j/github-api/pull/2108.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2108.patch", - "merged_at": null - }, - "body": "# Description\r\n\r\nAdds missing fields for the `GHAsset` and `GHRelease` classes.\r\nSee: https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28\r\n\r\nI didn't bother adding tests because it's just new fields/getters. \r\n\r\nFixes #2102\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2108/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2098", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/events", - "html_url": "https://github.com/hub4j/github-api/pull/2098", - "id": 3033530320, - "node_id": "PR_kwDOAAlq-s6Un7vp", - "number": 2098, - "title": "Add polymorphic deserialization for the GHAppInstallation account field", - "user": { - "login": "anujhydrabadi", - "id": 129152617, - "node_id": "U_kgDOB7K2aQ", - "avatar_url": "https://avatars.githubusercontent.com/u/129152617?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/anujhydrabadi", - "html_url": "https://github.com/anujhydrabadi", - "followers_url": "https://api.github.com/users/anujhydrabadi/followers", - "following_url": "https://api.github.com/users/anujhydrabadi/following{/other_user}", - "gists_url": "https://api.github.com/users/anujhydrabadi/gists{/gist_id}", - "starred_url": "https://api.github.com/users/anujhydrabadi/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/anujhydrabadi/subscriptions", - "organizations_url": "https://api.github.com/users/anujhydrabadi/orgs", - "repos_url": "https://api.github.com/users/anujhydrabadi/repos", - "events_url": "https://api.github.com/users/anujhydrabadi/events{/privacy}", - "received_events_url": "https://api.github.com/users/anujhydrabadi/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2025-05-01T09:37:33Z", - "updated_at": "2025-05-01T09:38:01Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "draft": true, - "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2098", - "html_url": "https://github.com/hub4j/github-api/pull/2098", - "diff_url": "https://github.com/hub4j/github-api/pull/2098.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2098.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2151", + "html_url": "https://github.com/hub4j/github-api/pull/2151", + "diff_url": "https://github.com/hub4j/github-api/pull/2151.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2151.patch", + "merged_at": "2025-10-23T00:51:32Z" }, - "body": "# Description\r\nFixes #1497 \r\nRecovering PR #1522 \r\nThere is a problem: this works fine for events, but when deserializing App Installation GET API responses, the `type` field (based on which we identify whether the `account` is User or Org) gets unset to `null`. The `account` polymorphic deserialization part works fine though. Perhaps there is a difference in how we are using Jackson at both places (events vs regular API responses), but I have not been able to figure it out yet. \r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "body": "\r\n# Description\r\n\r\nAdded `DYNAMIC` event type to GHEvent enum for handling new `dynamic` events. \r\nFixes #2150 \r\n\r\n- No docs linked as I can't find any published docs, but looking at the data it appears to be dynamic runs of workflows for things like Dependabot, etc. \r\n- No tests added as not all enum values currently had unit tests.\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2098/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2151/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -897,22 +2204,22 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2151/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2065", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2149", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/events", - "html_url": "https://github.com/hub4j/github-api/pull/2065", - "id": 2934401236, - "node_id": "PR_kwDOAAlq-s6PaV84", - "number": 2065, - "title": "Chore(deps): Bump spotbugs.version from 4.8.6 to 4.9.3", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2149/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2149/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2149/events", + "html_url": "https://github.com/hub4j/github-api/pull/2149", + "id": 3471705142, + "node_id": "PR_kwDOAAlq-s6rdSoE", + "number": 2149, + "title": "Chore(deps): Bump org.apache.commons:commons-lang3 from 3.18.0 to 3.19.0", "user": { "login": "dependabot[bot]", "id": 49699333, @@ -954,29 +2261,29 @@ "description": "Pull requests that update Java code" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 3, - "created_at": "2025-03-20T07:38:54Z", - "updated_at": "2025-05-01T02:35:32Z", - "closed_at": null, + "comments": 1, + "created_at": "2025-10-01T02:01:20Z", + "updated_at": "2025-10-23T00:59:43Z", + "closed_at": "2025-10-23T00:59:35Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2065", - "html_url": "https://github.com/hub4j/github-api/pull/2065", - "diff_url": "https://github.com/hub4j/github-api/pull/2065.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2065.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2149", + "html_url": "https://github.com/hub4j/github-api/pull/2149", + "diff_url": "https://github.com/hub4j/github-api/pull/2149.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2149.patch", + "merged_at": "2025-10-23T00:59:35Z" }, - "body": "Bumps `spotbugs.version` from 4.8.6 to 4.9.3.\nUpdates `com.github.spotbugs:spotbugs-annotations` from 4.8.6 to 4.9.3\n
\nRelease notes\n

Sourced from com.github.spotbugs:spotbugs-annotations's releases.

\n
\n

SpotBugs 4.9.3

\n

CHANGELOG

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

CHECKSUM

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
filechecksum (sha256)
spotbugs-4.9.3-javadoc.jar3d0d103724cbaaffc27f17d28d9b17f8972fb378397f8f04f6f05268bde110b7
spotbugs-4.9.3-sources.jar0aa5c905469eb578a3dbe09dcf704cf892568610cdb58550b142d658e37a29d4
spotbugs-4.9.3.tgzd464d56050cf1dbda032e9482e1188f7cd7b7646eaff79c2e6cbe4d6822f4d9f
spotbugs-4.9.3.zip3b2dcf86f97d701700121cee4bd22305d4b54fd9ed7666fa0f53933a4ab92251
spotbugs-annotations-4.9.3-javadoc.jar5fce79dc01a97aae84670922dd3581aa621b980535e4f6695a71db553dcb9cb4
spotbugs-annotations-4.9.3-sources.jar990ad9f3500499a99466b7c1e01284f4f41d1499358e7dc38c8defc59dab114c
spotbugs-annotations.jar13532bfe2f45fcd491432221df72d9cd0efb8f987c9245e12befa192c8925ce3
spotbugs-ant-4.9.3-javadoc.jar346eb5215f9d157ab46c3216a783416e2fa2e8c9d4458143267fb518f81c7d77
spotbugs-ant-4.9.3-sources.jar591073402e4110093a380169acd3f33b26c2f893c2eaed5a6460d9be0b26014e
spotbugs-ant.jar3a6f453696294d5314e648d4891d35e34315e11cb63c758a1601021cc0d803d1
spotbugs.jar710e8b98f1ae23cdb71aaaf07e8d71fb63b44f2bbbaa1df3c3ba0de62aba6ec9
test-harness-4.9.3-javadoc.jar57f51147e289b5c6493f844beaac97cde57773a1d16ce064e9deb8963b3f99ce
test-harness-4.9.3-sources.jar22688f14ef808cde65cc46e86d41c617fc397fc4967516006a73ce8bad658b9f
test-harness-4.9.3.jar9bf5bba9546e4f89032006261dd2921a79fc3044e473ee1fa73af870cb43da15
test-harness-core-4.9.3-javadoc.jar15aac012f3a8c8d6600075efe824aecab8233778e58345fecca65d7970256311
test-harness-core-4.9.3-sources.jar13825de35190089490c7e290b52bafe6a9b08ab431177c0191dae9cf2a88a55d
test-harness-core-4.9.3.jar3c74cc6d2d6f999d403f00f97685587e617d2bf1bfc348bbd0597e785c83feec
test-harness-jupiter-4.9.3-javadoc.jara8f276fb01743b8dc9f8cd6b517ae0748e38f673e31615a923c9c61f5fd9de58
test-harness-jupiter-4.9.3-sources.jar0aefbc5c8bd406e5dc0b1d59bc3afc6889c02010d486b22242f4f19a1a935800
test-harness-jupiter-4.9.3.jar0e9509de32f8fbc94cf088dbee80394fa93807a766532568e652cd622ce737c8
\n

SpotBugs 4.9.2

\n

CHANGELOG

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from com.github.spotbugs:spotbugs-annotations's changelog.

\n
\n

4.9.3 - 2025-03-14

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

4.9.2 - 2025-03-01

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n
    \n
  • Removed the TLW_TWO_LOCK_NOTIFY, LI_LAZY_INIT_INSTANCE, BRSA_BAD_RESULTSET_ACCESS, BC_NULL_INSTANCEOF, NP_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR and RCN_REDUNDANT_CHECKED_NULL_COMPARISON deprecated bug patterns.
  • \n
\n

4.9.1 - 2025-02-02

\n

Added

\n
    \n
  • New detector SharedVariableAtomicityDetector for new bug types AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE, AT_NONATOMIC_64BIT_PRIMITIVE and AT_STALE_THREAD_WRITE_OF_PRIMITIVE (See SEI CERT rules VNA00-J, VNA02-J and VNA05-J).
  • \n
  • New detector FindHiddenMethod for bug type HSM_HIDING_METHOD. This bug is reported whenever a subclass method hides the static method of super class. (See SEI CERT MET07-J).
  • \n
\n

Fixed

\n
    \n
  • Fixed the parsing of generics methods in ThrowingExceptions (#3267)
  • \n
  • Accept the 1st parameter of java.util.concurrent.CompletableFuture's completeOnTimeout(), getNow() and obtrudeValue() functions as nullable (#1001).
  • \n
  • Fixed the analysis error when FindReturnRef was checking instructions corresponding to a CFG branch that was optimized away (#3266)
  • \n
  • Added execute file permission to files in the distribution archive (#3274)
  • \n
  • Fixed a stack overflow in MultipleInstantiationsOfSingletons when a singleton initializer makes recursive calls (#3280)
  • \n
  • Fixed NPE in FindReturnRef on inner class fields (#3283)
  • \n
  • Fixed NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE false positive when add edu.umd.cs.findbugs.annotations.Nullable (#3243)
  • \n
\n

4.9.0 - 2025-01-15

\n

Added

\n
    \n
  • Updated the SuppressFBWarnings annotation to support finer grained bug suppressions (#3102)
  • \n
  • SimpleDateFormat, DateTimeFormatter, FastDateFormat string check for bad combinations of flag formatting (#637)
  • \n
  • New detector ResourceInMultipleThreadsDetector and introduced new bug type:\n
      \n
    • AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD is reported in case of unsafe resource access in multiple threads.
    • \n
    \n
  • \n
\n

Fixed

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1f6a719 release v4.9.3
  • \n
  • 30f22d8 fix(deps): update junit5 monorepo to v5.12.1 (#3357)
  • \n
  • 4b0cfff cleanup: remove redundant implementations of getDetectorClassName() (#3352)
  • \n
  • bd996f4 chore(deps): update dependency com.diffplug.gradle:goomph to v4.3.0 (#3355)
  • \n
  • e46c442 Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3353)
  • \n
  • 7450785 Introduce UselessSuppressionDetector to report the useless suppressions
  • \n
  • 830e10c fix(deps): update dependency checkstyle to v10.21.4 (#3347)
  • \n
  • b5c7686 fix(deps): update dependency org.checkerframework:checker-qual to v3.49.1 (#3...
  • \n
  • c4b59b1 chore(deps): update sphinxdoc/sphinx docker tag to v8.2.3 (#3344)
  • \n
  • 7fd6fa4 fix(deps): update mockito monorepo to v5.16.0 (#3345)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\nUpdates `com.github.spotbugs:spotbugs` from 4.8.6 to 4.9.3\n
\nRelease notes\n

Sourced from com.github.spotbugs:spotbugs's releases.

\n
\n

SpotBugs 4.9.3

\n

CHANGELOG

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

CHECKSUM

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
filechecksum (sha256)
spotbugs-4.9.3-javadoc.jar3d0d103724cbaaffc27f17d28d9b17f8972fb378397f8f04f6f05268bde110b7
spotbugs-4.9.3-sources.jar0aa5c905469eb578a3dbe09dcf704cf892568610cdb58550b142d658e37a29d4
spotbugs-4.9.3.tgzd464d56050cf1dbda032e9482e1188f7cd7b7646eaff79c2e6cbe4d6822f4d9f
spotbugs-4.9.3.zip3b2dcf86f97d701700121cee4bd22305d4b54fd9ed7666fa0f53933a4ab92251
spotbugs-annotations-4.9.3-javadoc.jar5fce79dc01a97aae84670922dd3581aa621b980535e4f6695a71db553dcb9cb4
spotbugs-annotations-4.9.3-sources.jar990ad9f3500499a99466b7c1e01284f4f41d1499358e7dc38c8defc59dab114c
spotbugs-annotations.jar13532bfe2f45fcd491432221df72d9cd0efb8f987c9245e12befa192c8925ce3
spotbugs-ant-4.9.3-javadoc.jar346eb5215f9d157ab46c3216a783416e2fa2e8c9d4458143267fb518f81c7d77
spotbugs-ant-4.9.3-sources.jar591073402e4110093a380169acd3f33b26c2f893c2eaed5a6460d9be0b26014e
spotbugs-ant.jar3a6f453696294d5314e648d4891d35e34315e11cb63c758a1601021cc0d803d1
spotbugs.jar710e8b98f1ae23cdb71aaaf07e8d71fb63b44f2bbbaa1df3c3ba0de62aba6ec9
test-harness-4.9.3-javadoc.jar57f51147e289b5c6493f844beaac97cde57773a1d16ce064e9deb8963b3f99ce
test-harness-4.9.3-sources.jar22688f14ef808cde65cc46e86d41c617fc397fc4967516006a73ce8bad658b9f
test-harness-4.9.3.jar9bf5bba9546e4f89032006261dd2921a79fc3044e473ee1fa73af870cb43da15
test-harness-core-4.9.3-javadoc.jar15aac012f3a8c8d6600075efe824aecab8233778e58345fecca65d7970256311
test-harness-core-4.9.3-sources.jar13825de35190089490c7e290b52bafe6a9b08ab431177c0191dae9cf2a88a55d
test-harness-core-4.9.3.jar3c74cc6d2d6f999d403f00f97685587e617d2bf1bfc348bbd0597e785c83feec
test-harness-jupiter-4.9.3-javadoc.jara8f276fb01743b8dc9f8cd6b517ae0748e38f673e31615a923c9c61f5fd9de58
test-harness-jupiter-4.9.3-sources.jar0aefbc5c8bd406e5dc0b1d59bc3afc6889c02010d486b22242f4f19a1a935800
test-harness-jupiter-4.9.3.jar0e9509de32f8fbc94cf088dbee80394fa93807a766532568e652cd622ce737c8
\n

SpotBugs 4.9.2

\n

CHANGELOG

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from com.github.spotbugs:spotbugs's changelog.

\n
\n

4.9.3 - 2025-03-14

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

4.9.2 - 2025-03-01

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n
    \n
  • Removed the TLW_TWO_LOCK_NOTIFY, LI_LAZY_INIT_INSTANCE, BRSA_BAD_RESULTSET_ACCESS, BC_NULL_INSTANCEOF, NP_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR and RCN_REDUNDANT_CHECKED_NULL_COMPARISON deprecated bug patterns.
  • \n
\n

4.9.1 - 2025-02-02

\n

Added

\n
    \n
  • New detector SharedVariableAtomicityDetector for new bug types AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE, AT_NONATOMIC_64BIT_PRIMITIVE and AT_STALE_THREAD_WRITE_OF_PRIMITIVE (See SEI CERT rules VNA00-J, VNA02-J and VNA05-J).
  • \n
  • New detector FindHiddenMethod for bug type HSM_HIDING_METHOD. This bug is reported whenever a subclass method hides the static method of super class. (See SEI CERT MET07-J).
  • \n
\n

Fixed

\n
    \n
  • Fixed the parsing of generics methods in ThrowingExceptions (#3267)
  • \n
  • Accept the 1st parameter of java.util.concurrent.CompletableFuture's completeOnTimeout(), getNow() and obtrudeValue() functions as nullable (#1001).
  • \n
  • Fixed the analysis error when FindReturnRef was checking instructions corresponding to a CFG branch that was optimized away (#3266)
  • \n
  • Added execute file permission to files in the distribution archive (#3274)
  • \n
  • Fixed a stack overflow in MultipleInstantiationsOfSingletons when a singleton initializer makes recursive calls (#3280)
  • \n
  • Fixed NPE in FindReturnRef on inner class fields (#3283)
  • \n
  • Fixed NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE false positive when add edu.umd.cs.findbugs.annotations.Nullable (#3243)
  • \n
\n

4.9.0 - 2025-01-15

\n

Added

\n
    \n
  • Updated the SuppressFBWarnings annotation to support finer grained bug suppressions (#3102)
  • \n
  • SimpleDateFormat, DateTimeFormatter, FastDateFormat string check for bad combinations of flag formatting (#637)
  • \n
  • New detector ResourceInMultipleThreadsDetector and introduced new bug type:\n
      \n
    • AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD is reported in case of unsafe resource access in multiple threads.
    • \n
    \n
  • \n
\n

Fixed

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1f6a719 release v4.9.3
  • \n
  • 30f22d8 fix(deps): update junit5 monorepo to v5.12.1 (#3357)
  • \n
  • 4b0cfff cleanup: remove redundant implementations of getDetectorClassName() (#3352)
  • \n
  • bd996f4 chore(deps): update dependency com.diffplug.gradle:goomph to v4.3.0 (#3355)
  • \n
  • e46c442 Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3353)
  • \n
  • 7450785 Introduce UselessSuppressionDetector to report the useless suppressions
  • \n
  • 830e10c fix(deps): update dependency checkstyle to v10.21.4 (#3347)
  • \n
  • b5c7686 fix(deps): update dependency org.checkerframework:checker-qual to v3.49.1 (#3...
  • \n
  • c4b59b1 chore(deps): update sphinxdoc/sphinx docker tag to v8.2.3 (#3344)
  • \n
  • 7fd6fa4 fix(deps): update mockito monorepo to v5.16.0 (#3345)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "body": "Bumps org.apache.commons:commons-lang3 from 3.18.0 to 3.19.0.\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.apache.commons:commons-lang3&package-manager=maven&previous-version=3.18.0&new-version=3.19.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2065/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2149/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -987,77 +2294,86 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2149/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1917", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2148", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/events", - "html_url": "https://github.com/hub4j/github-api/pull/1917", - "id": 2492934092, - "node_id": "PR_kwDOAAlq-s55wQBP", - "number": 1917, - "title": "Support setting & checking AutomatedSecurityFixes", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2148/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2148/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2148/events", + "html_url": "https://github.com/hub4j/github-api/pull/2148", + "id": 3471704908, + "node_id": "PR_kwDOAAlq-s6rdSkx", + "number": 2148, + "title": "Chore(deps): Bump org.junit:junit-bom from 5.13.4 to 6.0.0", "user": { - "login": "ranma2913", - "id": 4295880, - "node_id": "MDQ6VXNlcjQyOTU4ODA=", - "avatar_url": "https://avatars.githubusercontent.com/u/4295880?v=4", + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/ranma2913", - "html_url": "https://github.com/ranma2913", - "followers_url": "https://api.github.com/users/ranma2913/followers", - "following_url": "https://api.github.com/users/ranma2913/following{/other_user}", - "gists_url": "https://api.github.com/users/ranma2913/gists{/gist_id}", - "starred_url": "https://api.github.com/users/ranma2913/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/ranma2913/subscriptions", - "organizations_url": "https://api.github.com/users/ranma2913/orgs", - "repos_url": "https://api.github.com/users/ranma2913/repos", - "events_url": "https://api.github.com/users/ranma2913/events{/privacy}", - "received_events_url": "https://api.github.com/users/ranma2913/received_events", - "type": "User", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 4789870627, - "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", - "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", - "name": "work-abandoned", - "color": "000000", + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", "default": false, - "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." + "description": "Pull requests that update Java code" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 3, - "created_at": "2024-08-28T20:27:53Z", - "updated_at": "2025-01-14T18:08:46Z", - "closed_at": null, - "author_association": "NONE", + "comments": 2, + "created_at": "2025-10-01T02:01:14Z", + "updated_at": "2025-10-23T00:59:15Z", + "closed_at": "2025-10-23T00:58:56Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, - "draft": true, + "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/1917", - "html_url": "https://github.com/hub4j/github-api/pull/1917", - "diff_url": "https://github.com/hub4j/github-api/pull/1917.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/1917.patch", + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2148", + "html_url": "https://github.com/hub4j/github-api/pull/2148", + "diff_url": "https://github.com/hub4j/github-api/pull/2148.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2148.patch", "merged_at": null }, - "body": "https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#check-if-automated-security-fixes-are-enabled-for-a-repository\r\n\r\n# Description\r\n\r\nFixes #1916\r\n\r\nThis change will support Support Endpoints:\r\n\r\n https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#check-if-automated-security-fixes-are-enabled-for-a-repository\r\n https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#enable-automated-security-fixes\r\n https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#disable-automated-security-fixes\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "body": "Bumps [org.junit:junit-bom](https://github.com/junit-team/junit-framework) from 5.13.4 to 6.0.0.\n
\nRelease notes\n

Sourced from org.junit:junit-bom's releases.

\n
\n

JUnit 6.0.0 = Platform 6.0.0 + Jupiter 6.0.0 + Vintage 6.0.0

\n

See Release Notes.

\n

New Contributors

\n\n

Full Changelog: https://github.com/junit-team/junit-framework/compare/r5.14.0...r6.0.0

\n

JUnit 6.0.0-RC3 = Platform 6.0.0-RC3 + Jupiter 6.0.0-RC3 + Vintage 6.0.0-RC3

\n

See Release Notes.

\n

New Contributors

\n\n

Full Changelog: https://github.com/junit-team/junit-framework/compare/r6.0.0-RC2...r6.0.0-RC3

\n

JUnit 6.0.0-RC2 = Platform 6.0.0-RC2 + Jupiter 6.0.0-RC2 + Vintage 6.0.0-RC2

\n

See Release Notes.

\n

Full Changelog: https://github.com/junit-team/junit-framework/compare/r6.0.0-RC1...r6.0.0-RC2

\n

JUnit 6.0.0-RC1 = Platform 6.0.0-RC1 + Jupiter 6.0.0-RC1 + Vintage 6.0.0-RC1

\n

See Release Notes.

\n

New Contributors

\n\n

Full Changelog: https://github.com/junit-team/junit-framework/compare/r6.0.0-M2...r6.0.0-RC1

\n

JUnit 6.0.0-M2 = Platform 6.0.0-M2 + Jupiter 6.0.0-M2 + Vintage 6.0.0-M2

\n

See Release Notes.

\n

New Contributors

\n\n

Full Changelog: https://github.com/junit-team/junit-framework/compare/r6.0.0-M1...r6.0.0-M2

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 4f79594 Release 6.0.0
  • \n
  • 55af30a Revert "Use develop/6.x branch for junit-examples during release build"
  • \n
  • df3cfdd Release 5.14.0
  • \n
  • fcb84a2 Disable backward compatibility check when offline
  • \n
  • c9c8344 Prune 5.14.0 release notes
  • \n
  • 03d8a72 Update broken link to using API Gaurdian with bndtools
  • \n
  • 3a0b29b Use temporary JUnit 6 logo
  • \n
  • 6603caa Rename eclipseClasspath to eclipseConventions to avoid confusion
  • \n
  • ab3470b Make sealed MediaType work in Eclipse
  • \n
  • a8cd41e Remove annotations not visible in Eclipse
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.junit:junit-bom&package-manager=maven&previous-version=5.13.4&new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1917/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2148/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1068,77 +2384,86 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2148/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1787", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2147", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/events", - "html_url": "https://github.com/hub4j/github-api/pull/1787", - "id": 2122147185, - "node_id": "PR_kwDOAAlq-s5mNyo1", - "number": 1787, - "title": "Code Scanning API support", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2147/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2147/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2147/events", + "html_url": "https://github.com/hub4j/github-api/pull/2147", + "id": 3471704649, + "node_id": "PR_kwDOAAlq-s6rdShP", + "number": 2147, + "title": "Chore(deps): Bump codecov/codecov-action from 5.5.0 to 5.5.1", "user": { - "login": "wwong", - "id": 1160302, - "node_id": "MDQ6VXNlcjExNjAzMDI=", - "avatar_url": "https://avatars.githubusercontent.com/u/1160302?v=4", + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/wwong", - "html_url": "https://github.com/wwong", - "followers_url": "https://api.github.com/users/wwong/followers", - "following_url": "https://api.github.com/users/wwong/following{/other_user}", - "gists_url": "https://api.github.com/users/wwong/gists{/gist_id}", - "starred_url": "https://api.github.com/users/wwong/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/wwong/subscriptions", - "organizations_url": "https://api.github.com/users/wwong/orgs", - "repos_url": "https://api.github.com/users/wwong/repos", - "events_url": "https://api.github.com/users/wwong/events{/privacy}", - "received_events_url": "https://api.github.com/users/wwong/received_events", - "type": "User", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 4789870627, - "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", - "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", - "name": "work-abandoned", + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", "color": "000000", "default": false, - "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." + "description": "Pull requests that update Github_actions code" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 6, - "created_at": "2024-02-07T04:08:42Z", - "updated_at": "2024-07-01T19:15:15Z", - "closed_at": null, - "author_association": "NONE", + "comments": 1, + "created_at": "2025-10-01T02:01:07Z", + "updated_at": "2025-10-23T01:00:05Z", + "closed_at": "2025-10-23T00:59:57Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, - "draft": true, + "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/1787", - "html_url": "https://github.com/hub4j/github-api/pull/1787", - "diff_url": "https://github.com/hub4j/github-api/pull/1787.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/1787.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2147", + "html_url": "https://github.com/hub4j/github-api/pull/2147", + "diff_url": "https://github.com/hub4j/github-api/pull/2147.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2147.patch", + "merged_at": "2025-10-23T00:59:57Z" }, - "body": "# Description\r\n\r\nFollowing up on open comments from https://github.com/hub4j/github-api/pull/1142 and https://github.com/cortexapps/github-api/pull/8\r\n\r\nI don't currently have access to the security alerts for the example test repo (https://github.com/hub4j-test-org/Pixi), so the response fields might be slightly outdated until I (or someone else) can re-record the wiremock samples.\r\n\r\nStart of an (incomplete) implementation for https://github.com/hub4j/github-api/issues/1133 (will add more endpoints in a later PR)\r\n\r\nThis change adds the read-only calls for the following endpoints, as they were originally implemented in previous PRs:\r\n* [List code scanning alerts for a repository](https://docs.github.com/en/rest/code-scanning/code-scanning?apiVersion=2022-11-28#list-code-scanning-alerts-for-a-repository)\r\n* [Get a code scanning alert](https://docs.github.com/en/rest/code-scanning/code-scanning?apiVersion=2022-11-28#get-a-code-scanning-alert)\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "body": "Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.0 to 5.5.1.\n
\nRelease notes\n

Sourced from codecov/codecov-action's releases.

\n
\n

v5.5.1

\n

What's Changed

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/codecov/codecov-action/compare/v5.5.0...v5.5.1

\n
\n
\n
\nChangelog\n

Sourced from codecov/codecov-action's changelog.

\n
\n

v5.5.1

\n

What's Changed

\n\n

Full Changelog: https://github.com/codecov/codecov-action/compare/v5.5.0..v5.5.1

\n
\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=codecov/codecov-action&package-manager=github_actions&previous-version=5.5.0&new-version=5.5.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1787/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2147/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1149,77 +2474,67 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2147/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1730", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2143", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/events", - "html_url": "https://github.com/hub4j/github-api/pull/1730", - "id": 1952864832, - "node_id": "PR_kwDOAAlq-s5dTnjz", - "number": 1730, - "title": "Paginator", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2143/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2143/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2143/events", + "html_url": "https://github.com/hub4j/github-api/pull/2143", + "id": 3387881462, + "node_id": "PR_kwDOAAlq-s6nEJSs", + "number": 2143, + "title": "feat: add force-cancel workflow run", "user": { - "login": "anujhydrabadi", - "id": 129152617, - "node_id": "U_kgDOB7K2aQ", - "avatar_url": "https://avatars.githubusercontent.com/u/129152617?v=4", + "login": "cyrilico", + "id": 19289022, + "node_id": "MDQ6VXNlcjE5Mjg5MDIy", + "avatar_url": "https://avatars.githubusercontent.com/u/19289022?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/anujhydrabadi", - "html_url": "https://github.com/anujhydrabadi", - "followers_url": "https://api.github.com/users/anujhydrabadi/followers", - "following_url": "https://api.github.com/users/anujhydrabadi/following{/other_user}", - "gists_url": "https://api.github.com/users/anujhydrabadi/gists{/gist_id}", - "starred_url": "https://api.github.com/users/anujhydrabadi/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/anujhydrabadi/subscriptions", - "organizations_url": "https://api.github.com/users/anujhydrabadi/orgs", - "repos_url": "https://api.github.com/users/anujhydrabadi/repos", - "events_url": "https://api.github.com/users/anujhydrabadi/events{/privacy}", - "received_events_url": "https://api.github.com/users/anujhydrabadi/received_events", + "url": "https://api.github.com/users/cyrilico", + "html_url": "https://github.com/cyrilico", + "followers_url": "https://api.github.com/users/cyrilico/followers", + "following_url": "https://api.github.com/users/cyrilico/following{/other_user}", + "gists_url": "https://api.github.com/users/cyrilico/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cyrilico/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cyrilico/subscriptions", + "organizations_url": "https://api.github.com/users/cyrilico/orgs", + "repos_url": "https://api.github.com/users/cyrilico/repos", + "events_url": "https://api.github.com/users/cyrilico/events{/privacy}", + "received_events_url": "https://api.github.com/users/cyrilico/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 4789870627, - "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", - "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", - "name": "work-abandoned", - "color": "000000", - "default": false, - "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 3, - "created_at": "2023-10-19T18:48:14Z", - "updated_at": "2024-06-20T03:14:40Z", - "closed_at": null, + "comments": 1, + "created_at": "2025-09-05T15:06:56Z", + "updated_at": "2025-09-06T21:04:17Z", + "closed_at": "2025-09-06T19:47:04Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, - "draft": true, + "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/1730", - "html_url": "https://github.com/hub4j/github-api/pull/1730", - "diff_url": "https://github.com/hub4j/github-api/pull/1730.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/1730.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2143", + "html_url": "https://github.com/hub4j/github-api/pull/2143", + "diff_url": "https://github.com/hub4j/github-api/pull/2143.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2143.patch", + "merged_at": "2025-09-06T19:47:04Z" }, - "body": "# Description\r\n\r\n`paginator()` method in `PagedIterable` to support starting at a particular page, and next, previous, first, last and jumping to any particular page, along with a few other supporting methods. Made in parallel to `iterator()` method so as to keep backward compatibility, but supports all functionality that `iterator()` provides.\r\n\r\nFixes #348 \r\nFixes #1614 \r\nFixes #448 \r\nFixes #1197 \r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "body": "# Description\r\n\r\nPretty similar to the existing `cancel` method, but the forced version provided by Github: https://docs.github.com/en/rest/actions/workflow-runs?apiVersion=2022-11-28#force-cancel-a-workflow-run\r\n\r\nWe've been using this library extensively and we have a valid use case for force-cancel. This way we don't have go navigate around the library just for this request.\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1730/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2143/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1230,7 +2545,7 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2143/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/3-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/3-search_issues.json index 63a6d51e2d..bdce10bd5b 100644 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/3-search_issues.json +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/__files/3-search_issues.json @@ -1,7 +1,258 @@ { - "total_count": 16, + "total_count": 1370, "incomplete_results": false, "items": [ + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2193", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2193/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2193/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2193/events", + "html_url": "https://github.com/hub4j/github-api/pull/2193", + "id": 3880789387, + "node_id": "PR_kwDOAAlq-s7ApqDL", + "number": 2193, + "title": "Chore(deps): Bump org.jacoco:jacoco-maven-plugin from 0.8.13 to 0.8.14", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-02-01T02:02:49Z", + "updated_at": "2026-02-10T07:47:33Z", + "closed_at": "2026-02-10T07:47:20Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2193", + "html_url": "https://github.com/hub4j/github-api/pull/2193", + "diff_url": "https://github.com/hub4j/github-api/pull/2193.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2193.patch", + "merged_at": "2026-02-10T07:47:19Z" + }, + "body": "Bumps [org.jacoco:jacoco-maven-plugin](https://github.com/jacoco/jacoco) from 0.8.13 to 0.8.14.\n
\nRelease notes\n

Sourced from org.jacoco:jacoco-maven-plugin's releases.

\n
\n

0.8.14

\n

New Features

\n
    \n
  • JaCoCo now officially supports Java 25 (GitHub #1950).
  • \n
  • Experimental support for Java 26 class files (GitHub #1870).
  • \n
  • Branches added by the Kotlin compiler for default argument number 33 or higher are filtered out during generation of report (GitHub #1655).
  • \n
  • Part of bytecode generated by the Kotlin compiler for elvis operator that follows safe call operator is filtered out during generation of report (GitHub #1814, #1954).
  • \n
  • Part of bytecode generated by the Kotlin compiler for more cases of chained safe call operators is filtered out during generation of report (GitHub #1956).
  • \n
  • Part of bytecode generated by the Kotlin compiler for invocations of suspendCoroutineUninterceptedOrReturn intrinsic is filtered out during generation of report (GitHub #1929).
  • \n
  • Part of bytecode generated by the Kotlin compiler for suspending lambdas with parameters is filtered out during generation of report (GitHub #1945).
  • \n
  • Part of bytecode generated by the Kotlin compiler for suspending functions and lambdas with suspension points that return inline value class is filtered out during generation of report (GitHub #1871).
  • \n
  • Part of bytecode generated by the Kotlin Compose compiler plugin for pausable composition is filtered out during generation of report (GitHub #1911).
  • \n
  • Methods generated by the Kotlin serialization compiler plugin are filtered out (GitHub #1885, #1970, #1971).
  • \n
\n

Fixed bugs

\n
    \n
  • Fixed handling of implicit else clause of when with String subject in Kotlin (GitHub #1813, #1940).
  • \n
  • Fixed handling of implicit default clause of switch by String in Java when compiled by ECJ (GitHub #1813, #1940).\nFixed handling of exceptions in chains of safe call operators in Kotlin (GitHub #1819).
  • \n
\n

Non-functional Changes

\n
    \n
  • JaCoCo now depends on ASM 9.9 (GitHub #1965).
  • \n
\n
\n
\n
\nCommits\n
    \n
  • 2eb2483 Prepare release v0.8.14
  • \n
  • de76181 KotlinSerializableFilter should filter more methods (#1971)
  • \n
  • 89c4bd5 Fix NPE in KotlinSerializableFilter (#1970)
  • \n
  • 0981128 Migrate release staging to the Central Publisher Portal (#1968)
  • \n
  • d07bc6b Add filter for bytecode generated by Kotlin serialization compiler plugin (#1...
  • \n
  • 5e35fd5 Upgrade maven-dependency-plugin to 3.9.0 (#1966)
  • \n
  • c2fe5cc Upgrade ASM to 9.9 (#1965)
  • \n
  • b0f8e23 KotlinSafeCallOperatorFilter should filter "unoptimized" safe call followed b...
  • \n
  • c7bd3f4 Upgrade spotless-maven-plugin to 3.0.0 (#1961)
  • \n
  • faa289d KotlinSafeCallOperatorFilter should not be affected by presence of pseudo ins...
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.jacoco:jacoco-maven-plugin&package-manager=maven&previous-version=0.8.13&new-version=0.8.14)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2193/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2193/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2191", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2191/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2191/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2191/events", + "html_url": "https://github.com/hub4j/github-api/pull/2191", + "id": 3880788559, + "node_id": "PR_kwDOAAlq-s7App3r", + "number": 2191, + "title": "Chore(deps): Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.7 to 3.2.8", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-02-01T02:02:28Z", + "updated_at": "2026-02-10T07:48:12Z", + "closed_at": "2026-02-10T07:48:04Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2191", + "html_url": "https://github.com/hub4j/github-api/pull/2191", + "diff_url": "https://github.com/hub4j/github-api/pull/2191.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2191.patch", + "merged_at": "2026-02-10T07:48:04Z" + }, + "body": "Bumps [org.apache.maven.plugins:maven-gpg-plugin](https://github.com/apache/maven-gpg-plugin) from 3.2.7 to 3.2.8.\n
\nRelease notes\n

Sourced from org.apache.maven.plugins:maven-gpg-plugin's releases.

\n
\n

3.2.8

\n\n

🐛 Bug Fixes

\n\n

📝 Documentation updates

\n\n

👻 Maintenance

\n\n

📦 Dependency updates

\n\n
\n
\n
\nCommits\n
    \n
  • 8a46455 [maven-release-plugin] prepare release maven-gpg-plugin-3.2.8
  • \n
  • 7012821 Fix issueManagement, ciManagement system and url
  • \n
  • a9a8c84 Make empty classifier null (not empty string) (#287)
  • \n
  • a8368b0 Add .mvn
  • \n
  • f0e45e0 Update parent POM to 45 (#284)
  • \n
  • cb1236c Bump bouncycastleVersion from 1.78.1 to 1.80 (#127)
  • \n
  • 5377a10 Bump commons-io:commons-io from 2.18.0 to 2.19.0 (#133)
  • \n
  • 8b63932 Bump org.apache.maven.plugins:maven-invoker-plugin from 3.8.0 to 3.9.0 (#125)
  • \n
  • 54ea518 Bump org.simplify4u.plugins:pgpverify-maven-plugin from 1.18.2 to 1.19.1
  • \n
  • a6a412d Remove old JIRA issue link
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.apache.maven.plugins:maven-gpg-plugin&package-manager=maven&previous-version=3.2.7&new-version=3.2.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2191/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2191/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2190", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2190/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2190/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2190/events", + "html_url": "https://github.com/hub4j/github-api/pull/2190", + "id": 3858243660, + "node_id": "PR_kwDOAAlq-s6_e9RM", + "number": 2190, + "title": "fix: override GHPullRequest isPullRequest", + "user": { + "login": "Anonycoders", + "id": 40047636, + "node_id": "MDQ6VXNlcjQwMDQ3NjM2", + "avatar_url": "https://avatars.githubusercontent.com/u/40047636?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Anonycoders", + "html_url": "https://github.com/Anonycoders", + "followers_url": "https://api.github.com/users/Anonycoders/followers", + "following_url": "https://api.github.com/users/Anonycoders/following{/other_user}", + "gists_url": "https://api.github.com/users/Anonycoders/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Anonycoders/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Anonycoders/subscriptions", + "organizations_url": "https://api.github.com/users/Anonycoders/orgs", + "repos_url": "https://api.github.com/users/Anonycoders/repos", + "events_url": "https://api.github.com/users/Anonycoders/events{/privacy}", + "received_events_url": "https://api.github.com/users/Anonycoders/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "labels": [], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-01-27T00:18:17Z", + "updated_at": "2026-02-10T07:49:48Z", + "closed_at": "2026-02-10T07:49:34Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2190", + "html_url": "https://github.com/hub4j/github-api/pull/2190", + "diff_url": "https://github.com/hub4j/github-api/pull/2190.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2190.patch", + "merged_at": "2026-02-10T07:49:34Z" + }, + "body": "# Description\r\n\r\n* Fixes #2061\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2190/reactions", + "total_count": 1, + "+1": 1, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2190/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, { "url": "https://api.github.com/repos/hub4j/github-api/issues/2185", "repository_url": "https://api.github.com/repos/hub4j/github-api", @@ -35,15 +286,15 @@ "site_admin": false }, "labels": [], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, + "comments": 1, "created_at": "2026-01-25T19:29:46Z", - "updated_at": "2026-01-25T19:29:46Z", - "closed_at": null, + "updated_at": "2026-02-10T07:59:14Z", + "closed_at": "2026-02-10T07:58:24Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, @@ -53,9 +304,9 @@ "html_url": "https://github.com/hub4j/github-api/pull/2185", "diff_url": "https://github.com/hub4j/github-api/pull/2185.diff", "patch_url": "https://github.com/hub4j/github-api/pull/2185.patch", - "merged_at": null + "merged_at": "2026-02-10T07:58:24Z" }, - "body": "# Description\r\n\r\nFixes #2032 - (`GHPullRequestQueryBuilder` doesn't seem to support `pageSize(int)` but `GHIssueQueryBuilder` does)\r\n\r\nhttps://docs.github.com/en/rest/pulls/pulls?apiVersion=2022-11-28#list-pull-requests\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "body": "# Description\r\n\r\n* Fixes #2032 - (`GHPullRequestQueryBuilder` doesn't seem to support `pageSize(int)` but `GHIssueQueryBuilder` does)\r\n\r\nhttps://docs.github.com/en/rest/pulls/pulls?apiVersion=2022-11-28#list-pull-requests\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", "reactions": { "url": "https://api.github.com/repos/hub4j/github-api/issues/2185/reactions", "total_count": 0, @@ -106,15 +357,15 @@ "site_admin": false }, "labels": [], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 1, + "comments": 2, "created_at": "2026-01-25T03:46:29Z", - "updated_at": "2026-01-25T04:32:25Z", - "closed_at": null, + "updated_at": "2026-02-10T07:51:41Z", + "closed_at": "2026-02-10T07:51:18Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, @@ -124,7 +375,7 @@ "html_url": "https://github.com/hub4j/github-api/pull/2184", "diff_url": "https://github.com/hub4j/github-api/pull/2184.diff", "patch_url": "https://github.com/hub4j/github-api/pull/2184.patch", - "merged_at": null + "merged_at": "2026-02-10T07:51:18Z" }, "body": "# Description\r\n\r\nThis change adds new functionality to allow `marking draft PRs as ready for review` using GraphQL as it's not supported by REST.\r\n\r\nhttps://docs.github.com/en/graphql/reference/mutations#markpullrequestreadyforreview\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", "reactions": { @@ -145,16 +396,16 @@ "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2183", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2182", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/events", - "html_url": "https://github.com/hub4j/github-api/pull/2183", - "id": 3852488828, - "node_id": "PR_kwDOAAlq-s6_MeOS", - "number": 2183, - "title": "Move to Jackson 3 - Phase 2", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2182/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2182/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2182/events", + "html_url": "https://github.com/hub4j/github-api/pull/2182", + "id": 3852417004, + "node_id": "PR_kwDOAAlq-s6_MQiJ", + "number": 2182, + "title": "Enable Jackson 3 - Phase 1", "user": { "login": "pvillard31", "id": 11541012, @@ -177,29 +428,29 @@ "site_admin": false }, "labels": [], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2026-01-25T03:36:00Z", - "updated_at": "2026-01-25T03:36:00Z", - "closed_at": null, + "comments": 1, + "created_at": "2026-01-25T02:13:04Z", + "updated_at": "2026-01-25T03:20:51Z", + "closed_at": "2026-01-25T03:20:35Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2183", - "html_url": "https://github.com/hub4j/github-api/pull/2183", - "diff_url": "https://github.com/hub4j/github-api/pull/2183.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2183.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2182", + "html_url": "https://github.com/hub4j/github-api/pull/2182", + "diff_url": "https://github.com/hub4j/github-api/pull/2182.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2182.patch", + "merged_at": "2026-01-25T03:20:35Z" }, - "body": "# Description\r\n\r\nSee #2173 for the initial PR and associated discussion.\r\n\r\nThis PR is the follow-up of #2182.\r\n\r\n- Design GitHubJackson interface with methods for reading/writing JSON Implement GitHubJackson2 and GitHubJackson3\r\n- Create DefaultGitHubJackson factory with programmatic selection\r\n- Create GitHubJacksonException wrapper classes\r\n- Add GitHubBuilder.withJackson() for configuring Jackson implementation\r\n- Add testing infrastructure for both Jackson versions\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "body": "# Description\r\n\r\nSee discussion in #2173.\r\nThis is a first PR to stay on Jackson 2.x but prepare for Jackson 3 support.\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2183/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2182/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -210,69 +461,69 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2183/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2182/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2173", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2180", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/events", - "html_url": "https://github.com/hub4j/github-api/pull/2173", - "id": 3751227811, - "node_id": "PR_kwDOAAlq-s66AnNf", - "number": 2173, - "title": "Move to Jackson 3", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2180/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2180/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2180/events", + "html_url": "https://github.com/hub4j/github-api/pull/2180", + "id": 3839900916, + "node_id": "PR_kwDOAAlq-s6-iczp", + "number": 2180, + "title": "fix: adjust enterprise api url for graphql use case", "user": { - "login": "pvillard31", - "id": 11541012, - "node_id": "MDQ6VXNlcjExNTQxMDEy", - "avatar_url": "https://avatars.githubusercontent.com/u/11541012?v=4", + "login": "Anonycoders", + "id": 40047636, + "node_id": "MDQ6VXNlcjQwMDQ3NjM2", + "avatar_url": "https://avatars.githubusercontent.com/u/40047636?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/pvillard31", - "html_url": "https://github.com/pvillard31", - "followers_url": "https://api.github.com/users/pvillard31/followers", - "following_url": "https://api.github.com/users/pvillard31/following{/other_user}", - "gists_url": "https://api.github.com/users/pvillard31/gists{/gist_id}", - "starred_url": "https://api.github.com/users/pvillard31/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/pvillard31/subscriptions", - "organizations_url": "https://api.github.com/users/pvillard31/orgs", - "repos_url": "https://api.github.com/users/pvillard31/repos", - "events_url": "https://api.github.com/users/pvillard31/events{/privacy}", - "received_events_url": "https://api.github.com/users/pvillard31/received_events", + "url": "https://api.github.com/users/Anonycoders", + "html_url": "https://github.com/Anonycoders", + "followers_url": "https://api.github.com/users/Anonycoders/followers", + "following_url": "https://api.github.com/users/Anonycoders/following{/other_user}", + "gists_url": "https://api.github.com/users/Anonycoders/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Anonycoders/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Anonycoders/subscriptions", + "organizations_url": "https://api.github.com/users/Anonycoders/orgs", + "repos_url": "https://api.github.com/users/Anonycoders/repos", + "events_url": "https://api.github.com/users/Anonycoders/events{/privacy}", + "received_events_url": "https://api.github.com/users/Anonycoders/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 5, - "created_at": "2025-12-21T15:03:00Z", - "updated_at": "2026-01-25T02:15:17Z", - "closed_at": null, + "comments": 1, + "created_at": "2026-01-21T20:26:10Z", + "updated_at": "2026-01-24T22:05:14Z", + "closed_at": "2026-01-24T22:05:06Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2173", - "html_url": "https://github.com/hub4j/github-api/pull/2173", - "diff_url": "https://github.com/hub4j/github-api/pull/2173.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2173.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2180", + "html_url": "https://github.com/hub4j/github-api/pull/2180", + "diff_url": "https://github.com/hub4j/github-api/pull/2180.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2180.patch", + "merged_at": "2026-01-24T22:05:06Z" }, - "body": "# Description\r\n\r\nFollowing discussion in #2166.\r\nFixes #2166.\r\n\r\nFor reference: https://github.com/FasterXML/jackson/blob/main/jackson3/MIGRATING_TO_JACKSON_3.md\r\n\r\nThese changes are only targeting the 2.x line since it may be considered as containing breaking changes and requires a minimum java version of Java 17.\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "body": "# Description\r\n\r\nFor `GitHub.com` this is `https://api.github.com/graphql`. For `GitHub Enterprise Server`, the GraphQL endpoint is at `/api/graphql (not /api/v3/graphql)`.\r\nThis change makes sure the URL constructed appropriately.\r\n\r\nhttps://docs.github.com/en/enterprise-cloud@latest/graphql/guides/managing-enterprise-accounts#3-setting-up-insomnia-to-use-the-github-graphql-api-with-enterprise-accounts\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2173/reactions", - "total_count": 0, - "+1": 0, + "url": "https://api.github.com/repos/hub4j/github-api/issues/2180/reactions", + "total_count": 1, + "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, @@ -281,22 +532,22 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2173/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2180/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2168", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2178", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/events", - "html_url": "https://github.com/hub4j/github-api/pull/2168", - "id": 3678905639, - "node_id": "PR_kwDOAAlq-s62PChC", - "number": 2168, - "title": "Chore(deps): Bump spring.boot.version from 3.4.5 to 4.0.0", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2178/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2178/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2178/events", + "html_url": "https://github.com/hub4j/github-api/pull/2178", + "id": 3774013900, + "node_id": "PR_kwDOAAlq-s67KzV5", + "number": 2178, + "title": "Chore(deps): Bump jjwt.suite.version from 0.12.6 to 0.13.0", "user": { "login": "dependabot[bot]", "id": 49699333, @@ -338,29 +589,1199 @@ "description": "Pull requests that update Java code" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-12-01T02:09:06Z", - "updated_at": "2026-01-01T02:00:03Z", - "closed_at": null, + "comments": 1, + "created_at": "2026-01-01T02:01:02Z", + "updated_at": "2026-01-24T21:50:50Z", + "closed_at": "2026-01-24T21:50:09Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2168", - "html_url": "https://github.com/hub4j/github-api/pull/2168", - "diff_url": "https://github.com/hub4j/github-api/pull/2168.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2168.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2178", + "html_url": "https://github.com/hub4j/github-api/pull/2178", + "diff_url": "https://github.com/hub4j/github-api/pull/2178.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2178.patch", + "merged_at": "2026-01-24T21:50:09Z" + }, + "body": "Bumps `jjwt.suite.version` from 0.12.6 to 0.13.0.\nUpdates `io.jsonwebtoken:jjwt-api` from 0.12.6 to 0.13.0\n
\nRelease notes\n

Sourced from io.jsonwebtoken:jjwt-api's releases.

\n
\n

0.13.0

\n

This is the last minor JJWT release branch that will support Java 7.

\n

Any necessary emergency bug fixes will be fixed in subsequent 0.13.x patch releases, but all new development, including Java 8 compatible changes, will be in the next minor (0.14.0) release.

\n

All future JJWT major and minor versions ( 0.14.0 and later) will require Java 8 or later.

\n

What's Changed

\n

This release contains a single change:

\n
    \n
  • The previously private JacksonDeserializer(ObjectMapper objectMapper, Map<String, Class<?>> claimTypeMap) constructor is now public for those that want register a claims type converter on their own specified ObjectMapper instance. Thank you to @​kesrishubham2510 for PR #972. See Issue 914.
  • \n
\n

Full Changelog: https://github.com/jwtk/jjwt/compare/0.12.7...0.13.0

\n

0.12.7

\n

This patch release:

\n
    \n
  • \n

    Adds a new Maven BOM! This is useful for multi-module projects. See Issue 967.

    \n
  • \n
  • \n

    Allows the JwtParserBuilder to have empty nested algorithm collections, effectively disabling the parser's associated feature:

    \n
      \n
    • Emptying the zip() nested collection disables JWT decompression.
    • \n
    • Emptying the sig() nested collection disables JWS mac/signature verification (i.e. all JWSs will be unsupported/rejected).
    • \n
    • Emptying either the enc() or key() nested collections disables JWE decryption (i.e. all JWEs will be unsupported/rejected)
    • \n
    \n

    See Issue 996.

    \n
  • \n
  • \n

    Fixes bug 961 where JwtParserBuilder nested collection builders were not correctly replacing algorithms with the same id.

    \n
  • \n
  • \n

    Ensures a JwkSet's keys collection is no longer entirely secret/redacted by default. This was an overzealous default that was unnecessarily restrictive; the keys collection itself should always be public, and each individual key within should determine which fields should be redacted when printed. See Issue 976.

    \n
  • \n
  • \n

    Improves performance slightly by ensuring all jjwt-api utility methods that create *Builder instances (Jwts.builder(), Jwts.parserBuilder(), Jwks.builder(), etc) no longer use reflection.

    \n

    Instead,static factories are created via reflection only once during initial jjwt-api classloading, and then *Builders are created via standard instantiation using the new operator thereafter. This also benefits certain environments that may not have ideal ClassLoader implementations (e.g. Tomcat in some cases).

    \n

    NOTE: because this changes which classes are loaded via reflection, any environments that must explicitly reference reflective class names (e.g. GraalVM applications) will need to be updated to reflect the new factory class names.

    \n

    See Issue 988.

    \n
  • \n
  • \n

    Upgrades the Gson dependency to 2.11.0

    \n
  • \n
  • \n

    Upgrades the BouncyCastle dependency to 1.78.1

    \n
  • \n
\n

New Contributors

\n\n

Full Changelog: https://github.com/jwtk/jjwt/compare/0.12.6...0.12.7

\n
\n
\n
\nChangelog\n

Sourced from io.jsonwebtoken:jjwt-api's changelog.

\n
\n

0.13.0

\n

This is the last minor JJWT release branch that will support Java 7. Any necessary emergency bug fixes will be fixed in subsequent 0.13.x patch releases, but all new development, including Java 8 compatible changes, will be in the next minor (0.14.0) release.

\n

All future JJWT major and minor versions ( 0.14.0 and later) will require Java 8 or later.

\n

This 0.13.0 minor release has only one change:

\n
    \n
  • The previously private JacksonDeserializer(ObjectMapper objectMapper, Map<String, Class<?>> claimTypeMap) constructor is now public for those that want register a claims\ntype converter on their own specified ObjectMapper instance. See Issue 914.
  • \n
\n

0.12.7

\n

This patch release:

\n
    \n
  • \n

    Adds a new Maven BOM, useful for multi-module projects. See Issue 967.

    \n
  • \n
  • \n

    Allows the JwtParserBuilder to have empty nested algorithm collections, effectively disabling the parser's associated feature:

    \n
      \n
    • Emptying the zip() nested collection disables JWT decompression.
    • \n
    • Emptying the sig() nested collection disables JWS mac/signature verification (i.e. all JWSs will be unsupported/rejected).
    • \n
    • Emptying either the enc() or key() nested collections disables JWE decryption (i.e. all JWEs will be unsupported/rejected)
    • \n
    \n

    See Issue 996.

    \n
  • \n
  • \n

    Fixes bug 961 where JwtParserBuilder nested collection builders were not correctly replacing algorithms with the same id.

    \n
  • \n
  • \n

    Ensures a JwkSet's keys collection is no longer entirely secret/redacted by default. This was an overzealous default that was unnecessarily restrictive; the keys collection itself should always be public, and each individual key within should determine which fields should be redacted when printed. See Issue 976.

    \n
  • \n
  • \n

    Improves performance slightly by ensuring all jjwt-api utility methods that create *Builder instances (Jwts.builder(), Jwts.parserBuilder(), Jwks.builder(), etc) no longer use reflection.

    \n

    Instead,static factories are created via reflection only once during initial jjwt-api classloading, and then *Builders are created via standard instantiation using the new operator thereafter. This also benefits certain environments that may not have ideal ClassLoader implementations (e.g. Tomcat in some cases).

    \n

    NOTE: because this changes which classes are loaded via reflection, any environments that must explicitly reference reflective class names (e.g. GraalVM applications) will need to be updated to reflect the new factory class names.

    \n

    See Issue 988.

    \n
  • \n
  • \n

    Upgrades the Gson dependency to 2.11.0

    \n
  • \n
  • \n

    Upgrades the BouncyCastle dependency to 1.78.1

    \n
  • \n
\n
\n
\n
\nCommits\n\n
\n
\n\nUpdates `io.jsonwebtoken:jjwt-impl` from 0.12.6 to 0.13.0\n
\nRelease notes\n

Sourced from io.jsonwebtoken:jjwt-impl's releases.

\n
\n

0.13.0

\n

This is the last minor JJWT release branch that will support Java 7.

\n

Any necessary emergency bug fixes will be fixed in subsequent 0.13.x patch releases, but all new development, including Java 8 compatible changes, will be in the next minor (0.14.0) release.

\n

All future JJWT major and minor versions ( 0.14.0 and later) will require Java 8 or later.

\n

What's Changed

\n

This release contains a single change:

\n
    \n
  • The previously private JacksonDeserializer(ObjectMapper objectMapper, Map<String, Class<?>> claimTypeMap) constructor is now public for those that want register a claims type converter on their own specified ObjectMapper instance. Thank you to @​kesrishubham2510 for PR #972. See Issue 914.
  • \n
\n

Full Changelog: https://github.com/jwtk/jjwt/compare/0.12.7...0.13.0

\n

0.12.7

\n

This patch release:

\n
    \n
  • \n

    Adds a new Maven BOM! This is useful for multi-module projects. See Issue 967.

    \n
  • \n
  • \n

    Allows the JwtParserBuilder to have empty nested algorithm collections, effectively disabling the parser's associated feature:

    \n
      \n
    • Emptying the zip() nested collection disables JWT decompression.
    • \n
    • Emptying the sig() nested collection disables JWS mac/signature verification (i.e. all JWSs will be unsupported/rejected).
    • \n
    • Emptying either the enc() or key() nested collections disables JWE decryption (i.e. all JWEs will be unsupported/rejected)
    • \n
    \n

    See Issue 996.

    \n
  • \n
  • \n

    Fixes bug 961 where JwtParserBuilder nested collection builders were not correctly replacing algorithms with the same id.

    \n
  • \n
  • \n

    Ensures a JwkSet's keys collection is no longer entirely secret/redacted by default. This was an overzealous default that was unnecessarily restrictive; the keys collection itself should always be public, and each individual key within should determine which fields should be redacted when printed. See Issue 976.

    \n
  • \n
  • \n

    Improves performance slightly by ensuring all jjwt-api utility methods that create *Builder instances (Jwts.builder(), Jwts.parserBuilder(), Jwks.builder(), etc) no longer use reflection.

    \n

    Instead,static factories are created via reflection only once during initial jjwt-api classloading, and then *Builders are created via standard instantiation using the new operator thereafter. This also benefits certain environments that may not have ideal ClassLoader implementations (e.g. Tomcat in some cases).

    \n

    NOTE: because this changes which classes are loaded via reflection, any environments that must explicitly reference reflective class names (e.g. GraalVM applications) will need to be updated to reflect the new factory class names.

    \n

    See Issue 988.

    \n
  • \n
  • \n

    Upgrades the Gson dependency to 2.11.0

    \n
  • \n
  • \n

    Upgrades the BouncyCastle dependency to 1.78.1

    \n
  • \n
\n

New Contributors

\n\n

Full Changelog: https://github.com/jwtk/jjwt/compare/0.12.6...0.12.7

\n
\n
\n
\nChangelog\n

Sourced from io.jsonwebtoken:jjwt-impl's changelog.

\n
\n

0.13.0

\n

This is the last minor JJWT release branch that will support Java 7. Any necessary emergency bug fixes will be fixed in subsequent 0.13.x patch releases, but all new development, including Java 8 compatible changes, will be in the next minor (0.14.0) release.

\n

All future JJWT major and minor versions ( 0.14.0 and later) will require Java 8 or later.

\n

This 0.13.0 minor release has only one change:

\n
    \n
  • The previously private JacksonDeserializer(ObjectMapper objectMapper, Map<String, Class<?>> claimTypeMap) constructor is now public for those that want register a claims\ntype converter on their own specified ObjectMapper instance. See Issue 914.
  • \n
\n

0.12.7

\n

This patch release:

\n
    \n
  • \n

    Adds a new Maven BOM, useful for multi-module projects. See Issue 967.

    \n
  • \n
  • \n

    Allows the JwtParserBuilder to have empty nested algorithm collections, effectively disabling the parser's associated feature:

    \n
      \n
    • Emptying the zip() nested collection disables JWT decompression.
    • \n
    • Emptying the sig() nested collection disables JWS mac/signature verification (i.e. all JWSs will be unsupported/rejected).
    • \n
    • Emptying either the enc() or key() nested collections disables JWE decryption (i.e. all JWEs will be unsupported/rejected)
    • \n
    \n

    See Issue 996.

    \n
  • \n
  • \n

    Fixes bug 961 where JwtParserBuilder nested collection builders were not correctly replacing algorithms with the same id.

    \n
  • \n
  • \n

    Ensures a JwkSet's keys collection is no longer entirely secret/redacted by default. This was an overzealous default that was unnecessarily restrictive; the keys collection itself should always be public, and each individual key within should determine which fields should be redacted when printed. See Issue 976.

    \n
  • \n
  • \n

    Improves performance slightly by ensuring all jjwt-api utility methods that create *Builder instances (Jwts.builder(), Jwts.parserBuilder(), Jwks.builder(), etc) no longer use reflection.

    \n

    Instead,static factories are created via reflection only once during initial jjwt-api classloading, and then *Builders are created via standard instantiation using the new operator thereafter. This also benefits certain environments that may not have ideal ClassLoader implementations (e.g. Tomcat in some cases).

    \n

    NOTE: because this changes which classes are loaded via reflection, any environments that must explicitly reference reflective class names (e.g. GraalVM applications) will need to be updated to reflect the new factory class names.

    \n

    See Issue 988.

    \n
  • \n
  • \n

    Upgrades the Gson dependency to 2.11.0

    \n
  • \n
  • \n

    Upgrades the BouncyCastle dependency to 1.78.1

    \n
  • \n
\n
\n
\n
\nCommits\n\n
\n
\n\nUpdates `io.jsonwebtoken:jjwt-jackson` from 0.12.6 to 0.13.0\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2178/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2178/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2177", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2177/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2177/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2177/events", + "html_url": "https://github.com/hub4j/github-api/pull/2177", + "id": 3774013874, + "node_id": "PR_kwDOAAlq-s67KzVi", + "number": 2177, + "title": "Chore(deps): Bump codecov/codecov-action from 5.5.1 to 5.5.2", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", + "default": false, + "description": "Pull requests that update Github_actions code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-01-01T02:01:00Z", + "updated_at": "2026-01-23T20:37:39Z", + "closed_at": "2026-01-23T20:36:48Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2177", + "html_url": "https://github.com/hub4j/github-api/pull/2177", + "diff_url": "https://github.com/hub4j/github-api/pull/2177.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2177.patch", + "merged_at": "2026-01-23T20:36:48Z" + }, + "body": "Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.1 to 5.5.2.\n
\nRelease notes\n

Sourced from codecov/codecov-action's releases.

\n
\n

v5.5.2

\n

What's Changed

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/codecov/codecov-action/compare/v5.5.1...v5.5.2

\n
\n
\n
\nChangelog\n

Sourced from codecov/codecov-action's changelog.

\n
\n

v5.5.2

\n

What's Changed

\n

Full Changelog: https://github.com/codecov/codecov-action/compare/v5.5.1..v5.5.2

\n
\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=codecov/codecov-action&package-manager=github_actions&previous-version=5.5.1&new-version=5.5.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2177/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2177/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2176", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2176/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2176/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2176/events", + "html_url": "https://github.com/hub4j/github-api/pull/2176", + "id": 3774013831, + "node_id": "PR_kwDOAAlq-s67KzU-", + "number": 2176, + "title": "Chore(deps): Bump actions/download-artifact from 6 to 7", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", + "default": false, + "description": "Pull requests that update Github_actions code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-01-01T02:00:56Z", + "updated_at": "2026-01-24T21:51:17Z", + "closed_at": "2026-01-24T21:50:23Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2176", + "html_url": "https://github.com/hub4j/github-api/pull/2176", + "diff_url": "https://github.com/hub4j/github-api/pull/2176.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2176.patch", + "merged_at": "2026-01-24T21:50:23Z" + }, + "body": "Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7.\n
\nRelease notes\n

Sourced from actions/download-artifact's releases.

\n
\n

v7.0.0

\n

v7 - What's new

\n
\n

[!IMPORTANT]\nactions/download-artifact@v7 now runs on Node.js 24 (runs.using: node24) and requires a minimum Actions Runner version of 2.327.1. If you are using self-hosted runners, ensure they are updated before upgrading.

\n
\n

Node.js 24

\n

This release updates the runtime to Node.js 24. v6 had preliminary support for Node 24, however this action was by default still running on Node.js 20. Now this action by default will run on Node.js 24.

\n

What's Changed

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/actions/download-artifact/compare/v6.0.0...v7.0.0

\n
\n
\n
\nCommits\n
    \n
  • 37930b1 Merge pull request #452 from actions/download-artifact-v7-release
  • \n
  • 72582b9 doc: update readme
  • \n
  • 0d2ec9d chore: release v7.0.0 for Node.js 24 support
  • \n
  • fd7ae8f Merge pull request #451 from actions/fix-storage-blob
  • \n
  • d484700 chore: restore minimatch.dep.yml license file
  • \n
  • 03a8080 chore: remove obsolete dependency license files
  • \n
  • 56fe6d9 chore: update @​actions/artifact license file to 5.0.1
  • \n
  • 8e3ebc4 chore: update package-lock.json with @​actions/artifact@​5.0.1
  • \n
  • 1e3c4b4 fix: update @​actions/artifact to ^5.0.0 for Node.js 24 punycode fix
  • \n
  • 458627d chore: use local @​actions/artifact package for Node.js 24 testing
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/download-artifact&package-manager=github_actions&previous-version=6&new-version=7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2176/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2176/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2175", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2175/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2175/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2175/events", + "html_url": "https://github.com/hub4j/github-api/pull/2175", + "id": 3774013775, + "node_id": "PR_kwDOAAlq-s67KzUJ", + "number": 2175, + "title": "Chore(deps): Bump actions/upload-artifact from 5 to 6", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", + "default": false, + "description": "Pull requests that update Github_actions code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2026-01-01T02:00:52Z", + "updated_at": "2026-01-24T21:51:38Z", + "closed_at": "2026-01-24T21:50:40Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2175", + "html_url": "https://github.com/hub4j/github-api/pull/2175", + "diff_url": "https://github.com/hub4j/github-api/pull/2175.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2175.patch", + "merged_at": "2026-01-24T21:50:40Z" + }, + "body": "Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.\n
\nRelease notes\n

Sourced from actions/upload-artifact's releases.

\n
\n

v6.0.0

\n

v6 - What's new

\n
\n

[!IMPORTANT]\nactions/upload-artifact@v6 now runs on Node.js 24 (runs.using: node24) and requires a minimum Actions Runner version of 2.327.1. If you are using self-hosted runners, ensure they are updated before upgrading.

\n
\n

Node.js 24

\n

This release updates the runtime to Node.js 24. v5 had preliminary support for Node.js 24, however this action was by default still running on Node.js 20. Now this action by default will run on Node.js 24.

\n

What's Changed

\n\n

Full Changelog: https://github.com/actions/upload-artifact/compare/v5.0.0...v6.0.0

\n
\n
\n
\nCommits\n
    \n
  • b7c566a Merge pull request #745 from actions/upload-artifact-v6-release
  • \n
  • e516bc8 docs: correct description of Node.js 24 support in README
  • \n
  • ddc45ed docs: update README to correct action name for Node.js 24 support
  • \n
  • 615b319 chore: release v6.0.0 for Node.js 24 support
  • \n
  • 017748b Merge pull request #744 from actions/fix-storage-blob
  • \n
  • 38d4c79 chore: rebuild dist
  • \n
  • 7d27270 chore: add missing license cache files for @​actions/core, @​actions/io, and mi...
  • \n
  • 5f643d3 chore: update license files for @​actions/artifact@​5.0.1 dependencies
  • \n
  • 1df1684 chore: update package-lock.json with @​actions/artifact@​5.0.1
  • \n
  • b5b1a91 fix: update @​actions/artifact to ^5.0.0 for Node.js 24 punycode fix
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2175/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2175/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2174", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2174/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2174/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2174/events", + "html_url": "https://github.com/hub4j/github-api/pull/2174", + "id": 3774013768, + "node_id": "PR_kwDOAAlq-s67KzUC", + "number": 2174, + "title": "Chore(deps-dev): Bump org.mockito:mockito-core from 5.20.0 to 5.21.0", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 2, + "created_at": "2026-01-01T02:00:51Z", + "updated_at": "2026-01-24T21:51:51Z", + "closed_at": "2026-01-24T21:51:05Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2174", + "html_url": "https://github.com/hub4j/github-api/pull/2174", + "diff_url": "https://github.com/hub4j/github-api/pull/2174.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2174.patch", + "merged_at": "2026-01-24T21:51:05Z" + }, + "body": "Bumps [org.mockito:mockito-core](https://github.com/mockito/mockito) from 5.20.0 to 5.21.0.\n
\nRelease notes\n

Sourced from org.mockito:mockito-core's releases.

\n
\n

v5.21.0

\n

Changelog generated by Shipkit Changelog Gradle Plugin

\n

5.21.0

\n\n
\n
\n
\nCommits\n
    \n
  • 09d2230 Bump graalvm/setup-graalvm from 1.4.3 to 1.4.4 (#3768)
  • \n
  • df3e0cc Bump graalvm/setup-graalvm from 1.4.2 to 1.4.3 (#3767)
  • \n
  • 04a6e9f Bump actions/checkout from 5 to 6 (#3765)
  • \n
  • 756a3cf Add description of matchers to potential mismatch (#3760)
  • \n
  • 58ba445 Forbid mocking WeakReference with inline mock maker (#3759)
  • \n
  • 966d600 Bump actions/upload-artifact from 4 to 5 (#3756)
  • \n
  • 632bf7b Bump graalvm/setup-graalvm from 1.4.1 to 1.4.2 (#3755)
  • \n
  • 8564b43 Fix primitives support in GenericArrayReturnType for Android (#3753)
  • \n
  • bf3a809 Bump graalvm/setup-graalvm from 1.4.0 to 1.4.1 (#3744)
  • \n
  • cffddd4 Bump gradle/actions from 4 to 5 (#3743)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.mockito:mockito-core&package-manager=maven&previous-version=5.20.0&new-version=5.21.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2174/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2174/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2170", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2170/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2170/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2170/events", + "html_url": "https://github.com/hub4j/github-api/pull/2170", + "id": 3678909093, + "node_id": "PR_kwDOAAlq-s62PDSN", + "number": 2170, + "title": "Chore(deps): Bump actions/checkout from 5 to 6", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", + "default": false, + "description": "Pull requests that update Github_actions code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-12-01T02:10:52Z", + "updated_at": "2025-12-24T01:52:41Z", + "closed_at": "2025-12-24T01:52:29Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2170", + "html_url": "https://github.com/hub4j/github-api/pull/2170", + "diff_url": "https://github.com/hub4j/github-api/pull/2170.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2170.patch", + "merged_at": "2025-12-24T01:52:29Z" + }, + "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.\n
\nRelease notes\n

Sourced from actions/checkout's releases.

\n
\n

v6.0.0

\n

What's Changed

\n\n

Full Changelog: https://github.com/actions/checkout/compare/v5.0.0...v6.0.0

\n

v6-beta

\n

What's Changed

\n

Updated persist-credentials to store the credentials under $RUNNER_TEMP instead of directly in the local git config.

\n

This requires a minimum Actions Runner version of v2.329.0 to access the persisted credentials for Docker container action scenarios.

\n

v5.0.1

\n

What's Changed

\n\n

Full Changelog: https://github.com/actions/checkout/compare/v5...v5.0.1

\n
\n
\n
\nChangelog\n

Sourced from actions/checkout's changelog.

\n
\n

Changelog

\n

V6.0.0

\n\n

V5.0.1

\n\n

V5.0.0

\n\n

V4.3.1

\n\n

V4.3.0

\n\n

v4.2.2

\n\n

v4.2.1

\n\n

v4.2.0

\n\n

v4.1.7

\n\n

v4.1.6

\n\n

v4.1.5

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2170/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2170/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2169", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2169/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2169/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2169/events", + "html_url": "https://github.com/hub4j/github-api/pull/2169", + "id": 3678905792, + "node_id": "PR_kwDOAAlq-s62PCjL", + "number": 2169, + "title": "Chore(deps): Bump com.github.spotbugs:spotbugs-maven-plugin from 4.9.8.1 to 4.9.8.2", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-12-01T02:09:11Z", + "updated_at": "2025-12-24T01:54:46Z", + "closed_at": "2025-12-24T01:54:19Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2169", + "html_url": "https://github.com/hub4j/github-api/pull/2169", + "diff_url": "https://github.com/hub4j/github-api/pull/2169.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2169.patch", + "merged_at": "2025-12-24T01:54:19Z" + }, + "body": "Bumps [com.github.spotbugs:spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin) from 4.9.8.1 to 4.9.8.2.\n
\nRelease notes\n

Sourced from com.github.spotbugs:spotbugs-maven-plugin's releases.

\n
\n

Spotbugs Maven Plugin 4.9.8.2

\n\n
\n
\n
\nCommits\n
    \n
  • a03feda [maven-release-plugin] prepare release spotbugs-maven-plugin-4.9.8.2
  • \n
  • 1c8063d [gha] Update actions
  • \n
  • f59d628 Merge pull request #1265 from spotbugs/renovate/actions-checkout-6.x
  • \n
  • 1c232fb chore(deps): update actions/checkout action to v6
  • \n
  • 436be13 Merge pull request #1263 from spotbugs/renovate/actions-checkout-digest
  • \n
  • 0708203 Merge pull request #1264 from spotbugs/renovate/github-codeql-action-digest
  • \n
  • fcd2d1b chore(deps): update github/codeql-action digest to e12f017
  • \n
  • 7c54b5b chore(deps): update actions/checkout digest to 93cb6ef
  • \n
  • 79d724e Merge pull request #1262 from spotbugs/renovate/lang3.version
  • \n
  • b9bbed3 fix(deps): update dependency org.apache.commons:commons-lang3 to v3.20.0
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.github.spotbugs:spotbugs-maven-plugin&package-manager=maven&previous-version=4.9.8.1&new-version=4.9.8.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2169/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2169/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2168", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/events", + "html_url": "https://github.com/hub4j/github-api/pull/2168", + "id": 3678905639, + "node_id": "PR_kwDOAAlq-s62PChC", + "number": 2168, + "title": "Chore(deps): Bump spring.boot.version from 3.4.5 to 4.0.0", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-12-01T02:09:06Z", + "updated_at": "2026-02-01T02:02:44Z", + "closed_at": "2026-02-01T02:02:43Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2168", + "html_url": "https://github.com/hub4j/github-api/pull/2168", + "diff_url": "https://github.com/hub4j/github-api/pull/2168.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2168.patch", + "merged_at": null + }, + "body": "Bumps `spring.boot.version` from 3.4.5 to 4.0.0.\nUpdates `org.springframework.boot:spring-boot-dependencies` from 3.4.5 to 4.0.0\n
\nRelease notes\n

Sourced from org.springframework.boot:spring-boot-dependencies's releases.

\n
\n

v4.0.0

\n

Full release notes for Spring Boot 4.0 are available on the wiki. There is also a migration guide to help you upgrade from Spring Boot 3.5.

\n

:star: New Features

\n
    \n
  • Change tomcat and jetty runtime modules to starters #48175
  • \n
  • Rename spring-boot-kotlin-serialization to align with the name of the Kotlinx module that it pulls in #48076
  • \n
\n

:lady_beetle: Bug Fixes

\n
    \n
  • Error properties are a general web concern and should not be located beneath server.* #48201
  • \n
  • With both Jackson 2 and 3 on the classpath, @JsonTest fails due to duplicate jacksonTesterFactoryBean #48198
  • \n
  • Gradle war task does not exclude starter POMs from lib-provided #48197
  • \n
  • spring.test.webclient.mockrestserviceserver.enabled is not aligned with its module's name #48193
  • \n
  • SslMeterBinder doesn't register metrics for dynamically added bundles if no bundles exist at bind time #48182
  • \n
  • Properties bound in the child management context ignore the parent's environment prefix #48177
  • \n
  • ssl.chain.expiry metrics doesn't update for dynamically registered SSL bundles #48171
  • \n
  • Starter for spring-boot-micrometer-metrics is missing #48161
  • \n
  • Elasticsearch client's sniffer functionality should not be enabled by default #48155
  • \n
  • spring-boot-starter-elasticsearch should depend on elasticsearch-java #48141
  • \n
  • Auto-configuration exclusions are checked using a different class loader to the one that loads auto-configuration classes #48132
  • \n
  • New arm64 macbooks fail to bootBuildImage due to incorrect platform image #48128
  • \n
  • Properties for configuring an isolated JsonMapper or ObjectMapper are incorrectly named #48116
  • \n
  • Buildpack fails with recent Docker installs due to hardcoded version in URL #48103
  • \n
  • Image building may fail when specifying a platform if an image has already been built with a different platform #48099
  • \n
  • Default values of Kotlinx Serialization JSON configuration properties are not documented #48097
  • \n
  • Custom XML converters should override defaults in HttpMessageConverters #48096
  • \n
  • Kotlin serialization is used too aggressively when other JSON libraries are available #48070
  • \n
  • PortInUseException incorrectly thrown on failure to bind port due to Netty IP misconfiguration #48059
  • \n
  • Auto-configured JCacheMetrics cannot be customized #48057
  • \n
  • WebSecurityCustomizer beans are excluded by WebMvcTest #48055
  • \n
  • Deprecated EnvironmentPostProcessor does not resolve arguments #48047
  • \n
  • RetryPolicySettings should refer to maxRetries, not maxAttempts #48023
  • \n
  • Devtools Restarter does not work with a parameterless main method #47996
  • \n
  • Dependency management for Kafka should not manage Scala 2.12 libraries #47991
  • \n
  • spring-boot-mail should depend on jakarta.mail:jakarta.mail-api and org.eclipse.angus:angus-mail instead of org.eclipse.angus:jakarta.mail #47983
  • \n
  • spring-boot-starter-data-mongodb-reactive has dependency on reactor-test #47982
  • \n
  • Support for ReactiveElasticsearchClient is in the wrong module #47848
  • \n
\n

:notebook_with_decorative_cover: Documentation

\n
    \n
  • Removed property spring.test.webclient.register-rest-template is still documented #48199
  • \n
  • Mention support for detecting AWS ECS in "Deploying to the Cloud" #48170
  • \n
  • Revise AWS section of "Deploying to the Cloud" in reference manual #48163
  • \n
  • Fix typo in PortInUseException Javadoc #48134
  • \n
  • Correct section about required setters in "Type-safe Configuration Properties" #48131
  • \n
  • Use since attribute in configuration properties deprecation consistently #48122
  • \n
  • Document EndpointJsonMapper and management.endpoints.jackson.isolated-json-mapper #48115
  • \n
  • Document support for configuring servlet context init parameters using properties #48112
  • \n
  • Some configuration properties are not documented in the appendix #48095
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1c0e08b Release v4.0.0
  • \n
  • 3487928 Merge branch '3.5.x'
  • \n
  • 29b8e96 Switch make-default in preparation for Spring Boot 4.0.0
  • \n
  • 88da0dd Merge branch '3.5.x'
  • \n
  • 56feeaa Next development version (v3.5.9-SNAPSHOT)
  • \n
  • 3becdc7 Move server.error properties to spring.web.error
  • \n
  • 2b30632 Merge branch '3.5.x'
  • \n
  • 4f03b44 Merge branch '3.4.x' into 3.5.x
  • \n
  • 3d15c13 Next development version (v3.4.13-SNAPSHOT)
  • \n
  • dc140df Upgrade to Spring Framework 7.0.1
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\nUpdates `org.springframework.boot:spring-boot-maven-plugin` from 3.4.5 to 4.0.0\n
\nRelease notes\n

Sourced from org.springframework.boot:spring-boot-maven-plugin's releases.

\n
\n

v4.0.0

\n

Full release notes for Spring Boot 4.0 are available on the wiki. There is also a migration guide to help you upgrade from Spring Boot 3.5.

\n

:star: New Features

\n
    \n
  • Change tomcat and jetty runtime modules to starters #48175
  • \n
  • Rename spring-boot-kotlin-serialization to align with the name of the Kotlinx module that it pulls in #48076
  • \n
\n

:lady_beetle: Bug Fixes

\n
    \n
  • Error properties are a general web concern and should not be located beneath server.* #48201
  • \n
  • With both Jackson 2 and 3 on the classpath, @JsonTest fails due to duplicate jacksonTesterFactoryBean #48198
  • \n
  • Gradle war task does not exclude starter POMs from lib-provided #48197
  • \n
  • spring.test.webclient.mockrestserviceserver.enabled is not aligned with its module's name #48193
  • \n
  • SslMeterBinder doesn't register metrics for dynamically added bundles if no bundles exist at bind time #48182
  • \n
  • Properties bound in the child management context ignore the parent's environment prefix #48177
  • \n
  • ssl.chain.expiry metrics doesn't update for dynamically registered SSL bundles #48171
  • \n
  • Starter for spring-boot-micrometer-metrics is missing #48161
  • \n
  • Elasticsearch client's sniffer functionality should not be enabled by default #48155
  • \n
  • spring-boot-starter-elasticsearch should depend on elasticsearch-java #48141
  • \n
  • Auto-configuration exclusions are checked using a different class loader to the one that loads auto-configuration classes #48132
  • \n
  • New arm64 macbooks fail to bootBuildImage due to incorrect platform image #48128
  • \n
  • Properties for configuring an isolated JsonMapper or ObjectMapper are incorrectly named #48116
  • \n
  • Buildpack fails with recent Docker installs due to hardcoded version in URL #48103
  • \n
  • Image building may fail when specifying a platform if an image has already been built with a different platform #48099
  • \n
  • Default values of Kotlinx Serialization JSON configuration properties are not documented #48097
  • \n
  • Custom XML converters should override defaults in HttpMessageConverters #48096
  • \n
  • Kotlin serialization is used too aggressively when other JSON libraries are available #48070
  • \n
  • PortInUseException incorrectly thrown on failure to bind port due to Netty IP misconfiguration #48059
  • \n
  • Auto-configured JCacheMetrics cannot be customized #48057
  • \n
  • WebSecurityCustomizer beans are excluded by WebMvcTest #48055
  • \n
  • Deprecated EnvironmentPostProcessor does not resolve arguments #48047
  • \n
  • RetryPolicySettings should refer to maxRetries, not maxAttempts #48023
  • \n
  • Devtools Restarter does not work with a parameterless main method #47996
  • \n
  • Dependency management for Kafka should not manage Scala 2.12 libraries #47991
  • \n
  • spring-boot-mail should depend on jakarta.mail:jakarta.mail-api and org.eclipse.angus:angus-mail instead of org.eclipse.angus:jakarta.mail #47983
  • \n
  • spring-boot-starter-data-mongodb-reactive has dependency on reactor-test #47982
  • \n
  • Support for ReactiveElasticsearchClient is in the wrong module #47848
  • \n
\n

:notebook_with_decorative_cover: Documentation

\n
    \n
  • Removed property spring.test.webclient.register-rest-template is still documented #48199
  • \n
  • Mention support for detecting AWS ECS in "Deploying to the Cloud" #48170
  • \n
  • Revise AWS section of "Deploying to the Cloud" in reference manual #48163
  • \n
  • Fix typo in PortInUseException Javadoc #48134
  • \n
  • Correct section about required setters in "Type-safe Configuration Properties" #48131
  • \n
  • Use since attribute in configuration properties deprecation consistently #48122
  • \n
  • Document EndpointJsonMapper and management.endpoints.jackson.isolated-json-mapper #48115
  • \n
  • Document support for configuring servlet context init parameters using properties #48112
  • \n
  • Some configuration properties are not documented in the appendix #48095
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1c0e08b Release v4.0.0
  • \n
  • 3487928 Merge branch '3.5.x'
  • \n
  • 29b8e96 Switch make-default in preparation for Spring Boot 4.0.0
  • \n
  • 88da0dd Merge branch '3.5.x'
  • \n
  • 56feeaa Next development version (v3.5.9-SNAPSHOT)
  • \n
  • 3becdc7 Move server.error properties to spring.web.error
  • \n
  • 2b30632 Merge branch '3.5.x'
  • \n
  • 4f03b44 Merge branch '3.4.x' into 3.5.x
  • \n
  • 3d15c13 Next development version (v3.4.13-SNAPSHOT)
  • \n
  • dc140df Upgrade to Spring Framework 7.0.1
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2168/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2167", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2167/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2167/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2167/events", + "html_url": "https://github.com/hub4j/github-api/pull/2167", + "id": 3678905236, + "node_id": "PR_kwDOAAlq-s62PCbD", + "number": 2167, + "title": "Chore(deps-dev): Bump org.mockito:mockito-core from 5.16.1 to 5.20.0", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-12-01T02:08:53Z", + "updated_at": "2025-12-24T01:54:57Z", + "closed_at": "2025-12-24T01:54:37Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2167", + "html_url": "https://github.com/hub4j/github-api/pull/2167", + "diff_url": "https://github.com/hub4j/github-api/pull/2167.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2167.patch", + "merged_at": "2025-12-24T01:54:37Z" + }, + "body": "Bumps [org.mockito:mockito-core](https://github.com/mockito/mockito) from 5.16.1 to 5.20.0.\n
\nRelease notes\n

Sourced from org.mockito:mockito-core's releases.

\n
\n

v5.20.0

\n

Changelog generated by Shipkit Changelog Gradle Plugin

\n

5.20.0

\n\n

v5.19.0

\n

Changelog generated by Shipkit Changelog Gradle Plugin

\n

5.19.0

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 3a1a19e Add support for generic types in MockedConstruction and MockedStatic (#3729)
  • \n
  • f3c957a Bump org.assertj:assertj-core from 3.27.4 to 3.27.5 (#3730)
  • \n
  • 3cfbd42 Bump graalvm/setup-graalvm from 1.3.6 to 1.3.7 (#3725)
  • \n
  • 6f9a04b Bump com.gradle.develocity from 4.1.1 to 4.2 (#3726)
  • \n
  • c75dfb8 Bump org.eclipse.platform:org.eclipse.osgi from 3.23.100 to 3.23.200 (#3720)
  • \n
  • 54474fa Bump graalvm/setup-graalvm from 1.3.5 to 1.3.6 (#3719)
  • \n
  • bc06f21 Use Assume.assumeThat for SequencedCollection tests (#3711)
  • \n
  • a10aed0 Bump actions/setup-java from 4 to 5 (#3715)
  • \n
  • 37bb3e5 Fix metadata generation on GraalVM (#3710)
  • \n
  • ef2fd6f Bump com.gradle.develocity from 4.1 to 4.1.1 (#3713)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.mockito:mockito-core&package-manager=maven&previous-version=5.16.1&new-version=5.20.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2167/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2167/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2164", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2164/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2164/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2164/events", + "html_url": "https://github.com/hub4j/github-api/pull/2164", + "id": 3577024168, + "node_id": "PR_kwDOAAlq-s6w8R4i", + "number": 2164, + "title": "Chore(deps): Bump com.squareup.okhttp3:okhttp from 4.12.0 to 5.3.0", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-11-01T02:02:30Z", + "updated_at": "2025-12-01T02:11:43Z", + "closed_at": "2025-12-01T02:11:42Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2164", + "html_url": "https://github.com/hub4j/github-api/pull/2164", + "diff_url": "https://github.com/hub4j/github-api/pull/2164.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2164.patch", + "merged_at": null + }, + "body": "Bumps [com.squareup.okhttp3:okhttp](https://github.com/square/okhttp) from 4.12.0 to 5.3.0.\n
\nChangelog\n

Sourced from com.squareup.okhttp3:okhttp's changelog.

\n
\n

Version 5.3.0

\n

2025-10-30

\n
    \n
  • \n

    New: Add tags to Call, including computable tags. Use this to attach application-specific\nmetadata to a Call in an EventListener or Interceptor. The tag can be read in any other\nEventListener or Interceptor.

    \n
      override fun intercept(chain: Interceptor.Chain): Response {\n    chain.call().tag(MyAnalyticsTag::class) {\n      MyAnalyticsTag(...)\n    }\n
    return chain.proceed(chain.request())\n
    \n

    }\n

    \n
  • \n
  • \n

    New: Support request bodies on HTTP/1.1 connection upgrades.

    \n
  • \n
  • \n

    New: EventListener.plus() makes it easier to observe events in multiple listeners.

    \n
  • \n
  • \n

    Fix: Don't spam logs with ‘Method isLoggable in android.util.Log not mocked.’ when using\nOkHttp in Robolectric and Paparazzi tests.

    \n
  • \n
  • \n

    Upgrade: [Kotlin 2.2.21][kotlin_2_2_21].

    \n
  • \n
  • \n

    Upgrade: [Okio 3.16.2][okio_3_16_2].

    \n
  • \n
  • \n

    Upgrade: [ZSTD-KMP 0.4.0][zstd_kmp_0_4_0]. This update fixes a bug that caused APKs to fail\n[16 KB ELF alignment checks][elf_alignment].

    \n
  • \n
\n

Version 5.2.1

\n

2025-10-09

\n
    \n
  • \n

    Fix: Don't crash when calling Socket.shutdownOutput() or shutdownInput() on an SSLSocket\non Android API 21 through 23. This method throws an UnsupportedOperationException, so we now\ncatch that and close the underlying stream instead.

    \n
  • \n
  • \n

    Upgrade: [Okio 3.16.1][okio_3_16_1].

    \n
  • \n
\n

Version 5.2.0

\n

2025-10-07

\n
    \n
  • \n

    New: Support [HTTP 101] responses with Response.socket. This mechanism is only supported on\nHTTP/1.1. We also reimplemented our websocket client to use this new mechanism.

    \n
  • \n
  • \n

    New: The okhttp-zstd module negotiates [Zstandard (zstd)][zstd] compression with servers that\nsupport it. It integrates a new (unstable) [ZSTD-KMP] library, also from Square. Enable it like\nthis:

    \n
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 0960b47 Prepare for release 5.3.0.
  • \n
  • bfb24eb Support Request Bodies on HTTP1.1 Connection Upgrades (#9159)
  • \n
  • cf4a864 Update Gradle to v9.2.0 (#9171)
  • \n
  • 4e7dbec Update dependency com.puppycrawl.tools:checkstyle to v12.1.1 (#9169)
  • \n
  • 0470853 Add tags to calls, including computable tags (#9168)
  • \n
  • 2b70b39 Catch UnsatisfiedLinkError in AndroidLog (#9137)
  • \n
  • 3573555 Update dependency com.github.jnr:jnr-unixsocket to v0.38.24 (#9166)
  • \n
  • af8cf30 Update actions/upload-artifact action to v5 (#9167)
  • \n
  • 478e99c Build an computeIfAbsent() mechanism for tags (#9165)
  • \n
  • d393c86 Use Tags in okhttp3.Request (#9164)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.squareup.okhttp3:okhttp&package-manager=maven&previous-version=4.12.0&new-version=5.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2164/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2164/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2163", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2163/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2163/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2163/events", + "html_url": "https://github.com/hub4j/github-api/pull/2163", + "id": 3577021215, + "node_id": "PR_kwDOAAlq-s6w8RP2", + "number": 2163, + "title": "Chore(deps): Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.11.2 to 3.12.0", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-11-01T02:01:00Z", + "updated_at": "2025-11-26T17:03:35Z", + "closed_at": "2025-11-26T17:03:26Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2163", + "html_url": "https://github.com/hub4j/github-api/pull/2163", + "diff_url": "https://github.com/hub4j/github-api/pull/2163.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2163.patch", + "merged_at": "2025-11-26T17:03:26Z" + }, + "body": "Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.11.2 to 3.12.0.\n
\nRelease notes\n

Sourced from org.apache.maven.plugins:maven-javadoc-plugin's releases.

\n
\n

3.12.0

\n\n

:boom: Breaking changes

\n\n

🐛 Bug Fixes

\n\n

👻 Maintenance

\n\n

📦 Dependency updates

\n\n

3.11.3

\n\n

🚨 Removed

\n
    \n
  • Remove workaround for long patched CVE in javadoc (#388) @​elharo
  • \n
\n

🚀 New features and improvements

\n\n

🐛 Bug Fixes

\n
    \n
  • Make the legacyMode consistent (Filter out all of the module-info.java files in legacy mode, do not use --source-path in legacy mode) (#1217) @​fridrich
  • \n
  • [MJAVADOC-826] - Don't try to modify project source roots (#358) @​oehme
  • \n
\n

📝 Documentation updates

\n\n

👻 Maintenance

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 2a06bed [maven-release-plugin] prepare release maven-javadoc-plugin-3.12.0
  • \n
  • a71ecf9 bump version 3.12.0-SNAPSHOT
  • \n
  • 88f2b71 [maven-release-plugin] prepare for next development iteration
  • \n
  • 7e18956 [maven-release-plugin] prepare release maven-javadoc-plugin-3.11.4
  • \n
  • c11b76c In legacyMode, don't use -sourcepath, unless excludePackageNames is not empty...
  • \n
  • bc9904b remove fix mojo (#1263)
  • \n
  • f310135 Fix package {...} does not exist in legacyMode (#1243)
  • \n
  • c8270f9 detectOfflineLinks is now false per default for all jar mojo issue #1258 ...
  • \n
  • 953e609 Delete flaky test (#1260)
  • \n
  • 2bba7a4 Bump org.codehaus.mojo:mrm-maven-plugin from 1.6.0 to 1.7.0
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.apache.maven.plugins:maven-javadoc-plugin&package-manager=maven&previous-version=3.11.2&new-version=3.12.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2163/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2163/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2162", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2162/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2162/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2162/events", + "html_url": "https://github.com/hub4j/github-api/pull/2162", + "id": 3577021147, + "node_id": "PR_kwDOAAlq-s6w8RPA", + "number": 2162, + "title": "Chore(deps): Bump com.github.spotbugs:spotbugs-maven-plugin from 4.9.3.0 to 4.9.8.1", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-11-01T02:00:56Z", + "updated_at": "2025-11-26T17:03:57Z", + "closed_at": "2025-11-26T17:03:45Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2162", + "html_url": "https://github.com/hub4j/github-api/pull/2162", + "diff_url": "https://github.com/hub4j/github-api/pull/2162.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2162.patch", + "merged_at": "2025-11-26T17:03:45Z" + }, + "body": "Bumps [com.github.spotbugs:spotbugs-maven-plugin](https://github.com/spotbugs/spotbugs-maven-plugin) from 4.9.3.0 to 4.9.8.1.\n
\nRelease notes\n

Sourced from com.github.spotbugs:spotbugs-maven-plugin's releases.

\n
\n

Spotbugs Maven Plugin 4.9.8.1

\n

Bug fix with SpotbugsInfo.EOF error (was meant to be SpotbugsInfo.EOL).

\n

Spotbugs Maven Plugin 4.9.8.0

\n

Bug fix release supporting spotbugs 4.9.8.

\n

Spotbugs Maven Plugin 4.9.7.0

\n\n

Spotbugs Maven Plugin 4.9.6.0

\n
    \n
  • Supports spotbugs 4.9.6
  • \n
  • note: 4.9.5 had a defect with detection of jakarta in servlets that was unexpected and quickly patched for this release.
  • \n
\n

Spotbugs Maven Plugin 4.9.5.0

\n
    \n
  • Support spotbugs 4.9.5
  • \n
\n

Spotbugs Maven Plugin 4.9.4.2

\n

Consumer

\n
    \n
  • Add support for 'chooseVisitors'
  • \n
  • Minor code cleanup
  • \n
  • Still supports spotbugs 4.9.4
  • \n
\n

Producer

\n
    \n
  • Remove add opens from jvm.config as no longer needed
  • \n
\n

Spotbugs Maven Plugin 4.9.4.1

\n

Consumer

\n
    \n
  • Cleanup readme to better support plugin
  • \n
  • Dropped direct usage of plexus utils and commons io
  • \n
  • Groovy 5 now run engine
  • \n
  • Correct issue since 4.9.2.0 resulting in most runs getting spotbugs.html file incorrectly. This has been refactored to restore doxia 1 overrides to produce xml report only when not running in site lifecycle
  • \n
  • Correct defects with handling of various files on disk such as exclusion filters that were introduced into 4.9.4.0. Integration tests have been applied to prevent future regression.
  • \n
  • Commons io fileutils replaced by files.walk with detailed output moved to debug collection only rather than all runs
  • \n
  • Normalization of path to linux style
  • \n
  • Any regex usage is now precompiled
  • \n
  • Use re-entrant lock for source indexer
  • \n
  • Correct locale usage to use default if not given
  • \n
  • Block doctype and XXE when processing xml files
  • \n
  • Cleanup some fields from resources and in code never used
  • \n
\n

Producer

\n
    \n
  • Pin versions of github actions tools
  • \n
  • Run maven 3.6.3 integration test on windows to get more broad support
  • \n
  • Run maven integration test on mac to get more broad support
  • \n
  • Maven 4 integration tests will continue on linux
  • \n
  • Fix maven wrapper perceived path traversal issue
  • \n
  • Corrections to invoker to re-establish integration test verification's
  • \n
  • Fix bugs in integration tests
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 8eb6aa9 [maven-release-plugin] prepare release spotbugs-maven-plugin-4.9.8.1
  • \n
  • 4ff769f Fix: Correct reported issue with 'EOF' where it should be 'EOL'
  • \n
  • c210782 Merge pull request #1241 from spotbugs/renovate/execpluginversion
  • \n
  • 662fa1e Update dependency org.codehaus.mojo:exec-maven-plugin to v3.6.2
  • \n
  • 8cd9648 [maven-release-plugin] prepare for next development iteration
  • \n
  • d8d4c69 [maven-release-plugin] prepare release spotbugs-maven-plugin-4.9.8.0
  • \n
  • 52cdf26 [ci] Add note about pom entries to update for testing upstream master
  • \n
  • 9b8e387 [pom] Prepare for 4.9.8 release
  • \n
  • 0a8ac5a Merge pull request #1238 from spotbugs/renovate/github-codeql-action-digest
  • \n
  • 4b02d8d Merge pull request #1240 from spotbugs/renovate/spotbugs.version
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.github.spotbugs:spotbugs-maven-plugin&package-manager=maven&previous-version=4.9.3.0&new-version=4.9.8.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2162/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2162/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2161", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2161/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2161/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2161/events", + "html_url": "https://github.com/hub4j/github-api/pull/2161", + "id": 3577021087, + "node_id": "PR_kwDOAAlq-s6w8RON", + "number": 2161, + "title": "Chore(deps): Bump actions/upload-artifact from 4 to 5", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", + "default": false, + "description": "Pull requests that update Github_actions code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-11-01T02:00:52Z", + "updated_at": "2025-11-12T23:02:35Z", + "closed_at": "2025-11-12T23:01:16Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2161", + "html_url": "https://github.com/hub4j/github-api/pull/2161", + "diff_url": "https://github.com/hub4j/github-api/pull/2161.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2161.patch", + "merged_at": "2025-11-12T23:01:16Z" + }, + "body": "Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.\n
\nRelease notes\n

Sourced from actions/upload-artifact's releases.

\n
\n

v5.0.0

\n

What's Changed

\n

BREAKING CHANGE: this update supports Node v24.x. This is not a breaking change per-se but we're treating it as such.

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/actions/upload-artifact/compare/v4...v5.0.0

\n

v4.6.2

\n

What's Changed

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/actions/upload-artifact/compare/v4...v4.6.2

\n

v4.6.1

\n

What's Changed

\n\n

Full Changelog: https://github.com/actions/upload-artifact/compare/v4...v4.6.1

\n

v4.6.0

\n

What's Changed

\n\n

Full Changelog: https://github.com/actions/upload-artifact/compare/v4...v4.6.0

\n

v4.5.0

\n

What's Changed

\n\n

New Contributors

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 330a01c Merge pull request #734 from actions/danwkennedy/prepare-5.0.0
  • \n
  • 03f2824 Update github.dep.yml
  • \n
  • 905a1ec Prepare v5.0.0
  • \n
  • 2d9f9cd Merge pull request #725 from patrikpolyak/patch-1
  • \n
  • 9687587 Merge branch 'main' into patch-1
  • \n
  • 2848b2c Merge pull request #727 from danwkennedy/patch-1
  • \n
  • 9b51177 Spell out the first use of GHES
  • \n
  • cd231ca Update GHES guidance to include reference to Node 20 version
  • \n
  • de65e23 Merge pull request #712 from actions/nebuk89-patch-1
  • \n
  • 8747d8c Update README.md
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=4&new-version=5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", + "reactions": { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2161/reactions", + "total_count": 0, + "+1": 0, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 0, + "rocket": 0, + "eyes": 0 + }, + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2161/timeline", + "performed_via_github_app": null, + "state_reason": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/hub4j/github-api/issues/2160", + "repository_url": "https://api.github.com/repos/hub4j/github-api", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2160/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2160/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2160/events", + "html_url": "https://github.com/hub4j/github-api/pull/2160", + "id": 3577021065, + "node_id": "PR_kwDOAAlq-s6w8RN7", + "number": 2160, + "title": "Chore(deps-dev): Bump com.google.code.gson:gson from 2.12.1 to 2.13.2", + "user": { + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", + "default": false, + "description": "Pull requests that update Java code" + } + ], + "state": "closed", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2025-11-01T02:00:51Z", + "updated_at": "2025-11-12T23:03:51Z", + "closed_at": "2025-11-12T23:02:36Z", + "author_association": "CONTRIBUTOR", + "type": null, + "active_lock_reason": null, + "draft": false, + "pull_request": { + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2160", + "html_url": "https://github.com/hub4j/github-api/pull/2160", + "diff_url": "https://github.com/hub4j/github-api/pull/2160.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2160.patch", + "merged_at": "2025-11-12T23:02:36Z" }, - "body": "Bumps `spring.boot.version` from 3.4.5 to 4.0.0.\nUpdates `org.springframework.boot:spring-boot-dependencies` from 3.4.5 to 4.0.0\n
\nRelease notes\n

Sourced from org.springframework.boot:spring-boot-dependencies's releases.

\n
\n

v4.0.0

\n

Full release notes for Spring Boot 4.0 are available on the wiki. There is also a migration guide to help you upgrade from Spring Boot 3.5.

\n

:star: New Features

\n
    \n
  • Change tomcat and jetty runtime modules to starters #48175
  • \n
  • Rename spring-boot-kotlin-serialization to align with the name of the Kotlinx module that it pulls in #48076
  • \n
\n

:lady_beetle: Bug Fixes

\n
    \n
  • Error properties are a general web concern and should not be located beneath server.* #48201
  • \n
  • With both Jackson 2 and 3 on the classpath, @JsonTest fails due to duplicate jacksonTesterFactoryBean #48198
  • \n
  • Gradle war task does not exclude starter POMs from lib-provided #48197
  • \n
  • spring.test.webclient.mockrestserviceserver.enabled is not aligned with its module's name #48193
  • \n
  • SslMeterBinder doesn't register metrics for dynamically added bundles if no bundles exist at bind time #48182
  • \n
  • Properties bound in the child management context ignore the parent's environment prefix #48177
  • \n
  • ssl.chain.expiry metrics doesn't update for dynamically registered SSL bundles #48171
  • \n
  • Starter for spring-boot-micrometer-metrics is missing #48161
  • \n
  • Elasticsearch client's sniffer functionality should not be enabled by default #48155
  • \n
  • spring-boot-starter-elasticsearch should depend on elasticsearch-java #48141
  • \n
  • Auto-configuration exclusions are checked using a different class loader to the one that loads auto-configuration classes #48132
  • \n
  • New arm64 macbooks fail to bootBuildImage due to incorrect platform image #48128
  • \n
  • Properties for configuring an isolated JsonMapper or ObjectMapper are incorrectly named #48116
  • \n
  • Buildpack fails with recent Docker installs due to hardcoded version in URL #48103
  • \n
  • Image building may fail when specifying a platform if an image has already been built with a different platform #48099
  • \n
  • Default values of Kotlinx Serialization JSON configuration properties are not documented #48097
  • \n
  • Custom XML converters should override defaults in HttpMessageConverters #48096
  • \n
  • Kotlin serialization is used too aggressively when other JSON libraries are available #48070
  • \n
  • PortInUseException incorrectly thrown on failure to bind port due to Netty IP misconfiguration #48059
  • \n
  • Auto-configured JCacheMetrics cannot be customized #48057
  • \n
  • WebSecurityCustomizer beans are excluded by WebMvcTest #48055
  • \n
  • Deprecated EnvironmentPostProcessor does not resolve arguments #48047
  • \n
  • RetryPolicySettings should refer to maxRetries, not maxAttempts #48023
  • \n
  • Devtools Restarter does not work with a parameterless main method #47996
  • \n
  • Dependency management for Kafka should not manage Scala 2.12 libraries #47991
  • \n
  • spring-boot-mail should depend on jakarta.mail:jakarta.mail-api and org.eclipse.angus:angus-mail instead of org.eclipse.angus:jakarta.mail #47983
  • \n
  • spring-boot-starter-data-mongodb-reactive has dependency on reactor-test #47982
  • \n
  • Support for ReactiveElasticsearchClient is in the wrong module #47848
  • \n
\n

:notebook_with_decorative_cover: Documentation

\n
    \n
  • Removed property spring.test.webclient.register-rest-template is still documented #48199
  • \n
  • Mention support for detecting AWS ECS in "Deploying to the Cloud" #48170
  • \n
  • Revise AWS section of "Deploying to the Cloud" in reference manual #48163
  • \n
  • Fix typo in PortInUseException Javadoc #48134
  • \n
  • Correct section about required setters in "Type-safe Configuration Properties" #48131
  • \n
  • Use since attribute in configuration properties deprecation consistently #48122
  • \n
  • Document EndpointJsonMapper and management.endpoints.jackson.isolated-json-mapper #48115
  • \n
  • Document support for configuring servlet context init parameters using properties #48112
  • \n
  • Some configuration properties are not documented in the appendix #48095
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1c0e08b Release v4.0.0
  • \n
  • 3487928 Merge branch '3.5.x'
  • \n
  • 29b8e96 Switch make-default in preparation for Spring Boot 4.0.0
  • \n
  • 88da0dd Merge branch '3.5.x'
  • \n
  • 56feeaa Next development version (v3.5.9-SNAPSHOT)
  • \n
  • 3becdc7 Move server.error properties to spring.web.error
  • \n
  • 2b30632 Merge branch '3.5.x'
  • \n
  • 4f03b44 Merge branch '3.4.x' into 3.5.x
  • \n
  • 3d15c13 Next development version (v3.4.13-SNAPSHOT)
  • \n
  • dc140df Upgrade to Spring Framework 7.0.1
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\nUpdates `org.springframework.boot:spring-boot-maven-plugin` from 3.4.5 to 4.0.0\n
\nRelease notes\n

Sourced from org.springframework.boot:spring-boot-maven-plugin's releases.

\n
\n

v4.0.0

\n

Full release notes for Spring Boot 4.0 are available on the wiki. There is also a migration guide to help you upgrade from Spring Boot 3.5.

\n

:star: New Features

\n
    \n
  • Change tomcat and jetty runtime modules to starters #48175
  • \n
  • Rename spring-boot-kotlin-serialization to align with the name of the Kotlinx module that it pulls in #48076
  • \n
\n

:lady_beetle: Bug Fixes

\n
    \n
  • Error properties are a general web concern and should not be located beneath server.* #48201
  • \n
  • With both Jackson 2 and 3 on the classpath, @JsonTest fails due to duplicate jacksonTesterFactoryBean #48198
  • \n
  • Gradle war task does not exclude starter POMs from lib-provided #48197
  • \n
  • spring.test.webclient.mockrestserviceserver.enabled is not aligned with its module's name #48193
  • \n
  • SslMeterBinder doesn't register metrics for dynamically added bundles if no bundles exist at bind time #48182
  • \n
  • Properties bound in the child management context ignore the parent's environment prefix #48177
  • \n
  • ssl.chain.expiry metrics doesn't update for dynamically registered SSL bundles #48171
  • \n
  • Starter for spring-boot-micrometer-metrics is missing #48161
  • \n
  • Elasticsearch client's sniffer functionality should not be enabled by default #48155
  • \n
  • spring-boot-starter-elasticsearch should depend on elasticsearch-java #48141
  • \n
  • Auto-configuration exclusions are checked using a different class loader to the one that loads auto-configuration classes #48132
  • \n
  • New arm64 macbooks fail to bootBuildImage due to incorrect platform image #48128
  • \n
  • Properties for configuring an isolated JsonMapper or ObjectMapper are incorrectly named #48116
  • \n
  • Buildpack fails with recent Docker installs due to hardcoded version in URL #48103
  • \n
  • Image building may fail when specifying a platform if an image has already been built with a different platform #48099
  • \n
  • Default values of Kotlinx Serialization JSON configuration properties are not documented #48097
  • \n
  • Custom XML converters should override defaults in HttpMessageConverters #48096
  • \n
  • Kotlin serialization is used too aggressively when other JSON libraries are available #48070
  • \n
  • PortInUseException incorrectly thrown on failure to bind port due to Netty IP misconfiguration #48059
  • \n
  • Auto-configured JCacheMetrics cannot be customized #48057
  • \n
  • WebSecurityCustomizer beans are excluded by WebMvcTest #48055
  • \n
  • Deprecated EnvironmentPostProcessor does not resolve arguments #48047
  • \n
  • RetryPolicySettings should refer to maxRetries, not maxAttempts #48023
  • \n
  • Devtools Restarter does not work with a parameterless main method #47996
  • \n
  • Dependency management for Kafka should not manage Scala 2.12 libraries #47991
  • \n
  • spring-boot-mail should depend on jakarta.mail:jakarta.mail-api and org.eclipse.angus:angus-mail instead of org.eclipse.angus:jakarta.mail #47983
  • \n
  • spring-boot-starter-data-mongodb-reactive has dependency on reactor-test #47982
  • \n
  • Support for ReactiveElasticsearchClient is in the wrong module #47848
  • \n
\n

:notebook_with_decorative_cover: Documentation

\n
    \n
  • Removed property spring.test.webclient.register-rest-template is still documented #48199
  • \n
  • Mention support for detecting AWS ECS in "Deploying to the Cloud" #48170
  • \n
  • Revise AWS section of "Deploying to the Cloud" in reference manual #48163
  • \n
  • Fix typo in PortInUseException Javadoc #48134
  • \n
  • Correct section about required setters in "Type-safe Configuration Properties" #48131
  • \n
  • Use since attribute in configuration properties deprecation consistently #48122
  • \n
  • Document EndpointJsonMapper and management.endpoints.jackson.isolated-json-mapper #48115
  • \n
  • Document support for configuring servlet context init parameters using properties #48112
  • \n
  • Some configuration properties are not documented in the appendix #48095
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1c0e08b Release v4.0.0
  • \n
  • 3487928 Merge branch '3.5.x'
  • \n
  • 29b8e96 Switch make-default in preparation for Spring Boot 4.0.0
  • \n
  • 88da0dd Merge branch '3.5.x'
  • \n
  • 56feeaa Next development version (v3.5.9-SNAPSHOT)
  • \n
  • 3becdc7 Move server.error properties to spring.web.error
  • \n
  • 2b30632 Merge branch '3.5.x'
  • \n
  • 4f03b44 Merge branch '3.4.x' into 3.5.x
  • \n
  • 3d15c13 Next development version (v3.4.13-SNAPSHOT)
  • \n
  • dc140df Upgrade to Spring Framework 7.0.1
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "body": "Bumps [com.google.code.gson:gson](https://github.com/google/gson) from 2.12.1 to 2.13.2.\n
\nRelease notes\n

Sourced from com.google.code.gson:gson's releases.

\n
\n

Gson 2.13.2

\n

The main changes in this release are just newer dependencies.

\n

What's Changed

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/google/gson/compare/gson-parent-2.13.1...gson-parent-2.13.2

\n

Gson 2.13.1

\n

What's Changed

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/google/gson/compare/gson-parent-2.13.0...gson-parent-2.13.1

\n

Gson 2.13.0

\n

What's Changed

\n
    \n
  • \n

    A bug in deserializing collections has been fixed. Previously, if you did something like this:

    \n
    gson.fromJson(jsonString, new TypeToken<ImmutableList<String>>() {})\n
    \n

    then the inferred type would be ImmutableList<String>, but Gson actually gave you an ArrayList<String>. Usually that would lead to an immediate ClassCastException, but in some circumstances the code might sometimes succeed despite the wrong type. Now you will see an exception like this:

    \n
    com.google.gson.JsonIOException: Abstract classes can't be instantiated!\nAdjust the R8 configuration or register an InstanceCreator or a TypeAdapter for this type.\nClass name: com.google.common.collect.ImmutableList\n
    \n

    because Gson now really is trying to create an ImmutableList through its constructor, but that isn't possible.\nEither change the requested type (in the TypeToken) to List<String>, or register a TypeAdapter or JsonDeserializer for ImmutableList.

    \n
  • \n
  • \n

    The internal classes $Gson$Types and $Gson$Preconditions have been renamed to remove the $ characters. Since these are internal classes (as signaled not only by the package name but by the $ characters), client code should not be affected. If your code was depending on these classes then we suggest making a copy of the class (subject to the license) rather than depending on the new names.

    \n
  • \n
\n

Full Changelog: https://github.com/google/gson/compare/gson-parent-2.12.1...gson-parent-2.13.0

\n
\n
\n
\nCommits\n
    \n
  • 686fad7 [maven-release-plugin] prepare release gson-parent-2.13.2
  • \n
  • c2d252a Switch to using central-publishing-maven-plugin. (#2900)
  • \n
  • 69cb755 Bump the github-actions group with 5 updates (#2894)
  • \n
  • ea552c2 Bump the maven group across 1 directory with 3 updates (#2898)
  • \n
  • fdc616d Set top-level permissions for CodeQL workflow (#2889)
  • \n
  • 9334715 Create scorecard.yml (#2888)
  • \n
  • f7de5c2 Bump the maven group with 8 updates (#2885)
  • \n
  • 8c23cd3 Update sources to satisfy a new Error Prone check. (#2887)
  • \n
  • 5eab3ed Bump the github-actions group with 2 updates (#2886)
  • \n
  • 5f5c200 Bump the maven group across 1 directory with 10 updates (#2872)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.google.code.gson:gson&package-manager=maven&previous-version=2.12.1&new-version=2.13.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2168/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2160/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -371,22 +1792,22 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2168/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2160/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2171", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2159", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/events", - "html_url": "https://github.com/hub4j/github-api/pull/2171", - "id": 3678910531, - "node_id": "PR_kwDOAAlq-s62PDmc", - "number": 2171, - "title": "Chore(deps): Bump com.squareup.okhttp3:okhttp from 4.12.0 to 5.3.2", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2159/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2159/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2159/events", + "html_url": "https://github.com/hub4j/github-api/pull/2159", + "id": 3577021033, + "node_id": "PR_kwDOAAlq-s6w8RNf", + "number": 2159, + "title": "Chore(deps): Bump github/codeql-action from 3 to 4", "user": { "login": "dependabot[bot]", "id": 49699333, @@ -419,38 +1840,38 @@ "description": "Pull requests that update a dependency file" }, { - "id": 2156391625, - "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", - "url": "https://api.github.com/repos/hub4j/github-api/labels/java", - "name": "java", - "color": "ffa221", + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", "default": false, - "description": "Pull requests that update Java code" + "description": "Pull requests that update Github_actions code" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-12-01T02:11:39Z", - "updated_at": "2026-01-01T02:00:03Z", - "closed_at": null, + "comments": 1, + "created_at": "2025-11-01T02:00:49Z", + "updated_at": "2025-11-12T23:01:40Z", + "closed_at": "2025-11-12T23:00:52Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2171", - "html_url": "https://github.com/hub4j/github-api/pull/2171", - "diff_url": "https://github.com/hub4j/github-api/pull/2171.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2171.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2159", + "html_url": "https://github.com/hub4j/github-api/pull/2159", + "diff_url": "https://github.com/hub4j/github-api/pull/2159.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2159.patch", + "merged_at": "2025-11-12T23:00:52Z" }, - "body": "Bumps [com.squareup.okhttp3:okhttp](https://github.com/square/okhttp) from 4.12.0 to 5.3.2.\n
\nChangelog\n

Sourced from com.squareup.okhttp3:okhttp's changelog.

\n
\n

Version 5.3.2

\n

2025-11-18

\n
    \n
  • \n

    Fix: Don't delay triggering timeouts. In Okio 3.16.0 we introduced a regression that caused\ntimeouts to fire later than they were supposed to.

    \n
  • \n
  • \n

    Upgrade: [Okio 3.16.4][okio_3_16_4].

    \n
  • \n
\n

Version 5.3.1

\n

2025-11-16

\n

This release is the same as 5.3.0. Okio 3.16.3 didn't have a necessary fix!

\n
    \n
  • Upgrade: [Okio 3.16.3][okio_3_16_3].
  • \n
\n

Version 5.3.0

\n

2025-10-30

\n
    \n
  • \n

    New: Add tags to Call, including computable tags. Use this to attach application-specific\nmetadata to a Call in an EventListener or Interceptor. The tag can be read in any other\nEventListener or Interceptor.

    \n
      override fun intercept(chain: Interceptor.Chain): Response {\n    chain.call().tag(MyAnalyticsTag::class) {\n      MyAnalyticsTag(...)\n    }\n
    return chain.proceed(chain.request())\n
    \n

    }\n

    \n
  • \n
  • \n

    New: Support request bodies on HTTP/1.1 connection upgrades.

    \n
  • \n
  • \n

    New: EventListener.plus() makes it easier to observe events in multiple listeners.

    \n
  • \n
  • \n

    Fix: Don't spam logs with ‘Method isLoggable in android.util.Log not mocked.’ when using\nOkHttp in Robolectric and Paparazzi tests.

    \n
  • \n
  • \n

    Upgrade: [Kotlin 2.2.21][kotlin_2_2_21].

    \n
  • \n
  • \n

    Upgrade: [Okio 3.16.2][okio_3_16_2].

    \n
  • \n
  • \n

    Upgrade: [ZSTD-KMP 0.4.0][zstd_kmp_0_4_0]. This update fixes a bug that caused APKs to fail\n[16 KB ELF alignment checks][elf_alignment].

    \n
  • \n
\n

Version 5.2.3

\n

2025-11-18

\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.squareup.okhttp3:okhttp&package-manager=maven&previous-version=4.12.0&new-version=5.3.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "body": "Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4.\n
\nRelease notes\n

Sourced from github/codeql-action's releases.

\n
\n

v3.31.2

\n

CodeQL Action Changelog

\n

See the releases page for the relevant changes to the CodeQL CLI and language packs.

\n

3.31.2 - 30 Oct 2025

\n

No user facing changes.

\n

See the full CHANGELOG.md for more information.

\n

v3.31.1

\n

CodeQL Action Changelog

\n

See the releases page for the relevant changes to the CodeQL CLI and language packs.

\n

3.31.1 - 30 Oct 2025

\n
    \n
  • The add-snippets input has been removed from the analyze action. This input has been deprecated since CodeQL Action 3.26.4 in August 2024 when this removal was announced.
  • \n
\n

See the full CHANGELOG.md for more information.

\n

v3.31.0

\n

CodeQL Action Changelog

\n

See the releases page for the relevant changes to the CodeQL CLI and language packs.

\n

3.31.0 - 24 Oct 2025

\n
    \n
  • Bump minimum CodeQL bundle version to 2.17.6. #3223
  • \n
  • When SARIF files are uploaded by the analyze or upload-sarif actions, the CodeQL Action automatically performs post-processing steps to prepare the data for the upload. Previously, these post-processing steps were only performed before an upload took place. We are now changing this so that the post-processing steps will always be performed, even when the SARIF files are not uploaded. This does not change anything for the upload-sarif action. For analyze, this may affect Advanced Setup for CodeQL users who specify a value other than always for the upload input. #3222
  • \n
\n

See the full CHANGELOG.md for more information.

\n

v3.30.9

\n

CodeQL Action Changelog

\n

See the releases page for the relevant changes to the CodeQL CLI and language packs.

\n

3.30.9 - 17 Oct 2025

\n
    \n
  • Update default CodeQL bundle version to 2.23.3. #3205
  • \n
  • Experimental: A new setup-codeql action has been added which is similar to init, except it only installs the CodeQL CLI and does not initialize a database. Do not use this in production as it is part of an internal experiment and subject to change at any time. #3204
  • \n
\n

See the full CHANGELOG.md for more information.

\n

v3.30.8

\n

CodeQL Action Changelog

\n

See the releases page for the relevant changes to the CodeQL CLI and language packs.

\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from github/codeql-action's changelog.

\n
\n

4.31.2 - 30 Oct 2025

\n

No user facing changes.

\n

4.31.1 - 30 Oct 2025

\n
    \n
  • The add-snippets input has been removed from the analyze action. This input has been deprecated since CodeQL Action 3.26.4 in August 2024 when this removal was announced.
  • \n
\n

4.31.0 - 24 Oct 2025

\n
    \n
  • Bump minimum CodeQL bundle version to 2.17.6. #3223
  • \n
  • When SARIF files are uploaded by the analyze or upload-sarif actions, the CodeQL Action automatically performs post-processing steps to prepare the data for the upload. Previously, these post-processing steps were only performed before an upload took place. We are now changing this so that the post-processing steps will always be performed, even when the SARIF files are not uploaded. This does not change anything for the upload-sarif action. For analyze, this may affect Advanced Setup for CodeQL users who specify a value other than always for the upload input. #3222
  • \n
\n

4.30.9 - 17 Oct 2025

\n
    \n
  • Update default CodeQL bundle version to 2.23.3. #3205
  • \n
  • Experimental: A new setup-codeql action has been added which is similar to init, except it only installs the CodeQL CLI and does not initialize a database. Do not use this in production as it is part of an internal experiment and subject to change at any time. #3204
  • \n
\n

4.30.8 - 10 Oct 2025

\n

No user facing changes.

\n

4.30.7 - 06 Oct 2025

\n
    \n
  • [v4+ only] The CodeQL Action now runs on Node.js v24. #3169
  • \n
\n

3.30.6 - 02 Oct 2025

\n
    \n
  • Update default CodeQL bundle version to 2.23.2. #3168
  • \n
\n

3.30.5 - 26 Sep 2025

\n
    \n
  • We fixed a bug that was introduced in 3.30.4 with upload-sarif which resulted in files without a .sarif extension not getting uploaded. #3160
  • \n
\n

3.30.4 - 25 Sep 2025

\n
    \n
  • We have improved the CodeQL Action's ability to validate that the workflow it is used in does not use different versions of the CodeQL Action for different workflow steps. Mixing different versions of the CodeQL Action in the same workflow is unsupported and can lead to unpredictable results. A warning will now be emitted from the codeql-action/init step if different versions of the CodeQL Action are detected in the workflow file. Additionally, an error will now be thrown by the other CodeQL Action steps if they load a configuration file that was generated by a different version of the codeql-action/init step. #3099 and #3100
  • \n
  • We added support for reducing the size of dependency caches for Java analyses, which will reduce cache usage and speed up workflows. This will be enabled automatically at a later time. #3107
  • \n
  • You can now run the latest CodeQL nightly bundle by passing tools: nightly to the init action. In general, the nightly bundle is unstable and we only recommend running it when directed by GitHub staff. #3130
  • \n
  • Update default CodeQL bundle version to 2.23.1. #3118
  • \n
\n

3.30.3 - 10 Sep 2025

\n

No user facing changes.

\n

3.30.2 - 09 Sep 2025

\n
    \n
  • Fixed a bug which could cause language autodetection to fail. #3084
  • \n
  • Experimental: The quality-queries input that was added in 3.29.2 as part of an internal experiment is now deprecated and will be removed in an upcoming version of the CodeQL Action. It has been superseded by a new analysis-kinds input, which is part of the same internal experiment. Do not use this in production as it is subject to change at any time. #3064
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 74c8748 Update analyze/action.yml
  • \n
  • 34c50c1 Merge pull request #3251 from github/mbg/user-error/enablement
  • \n
  • 4ae68af Warn if the add-snippets input is used
  • \n
  • 52a7bd7 Check for 403 status
  • \n
  • 194ba0e Make error message tests less brittle
  • \n
  • 53acf0b Turn enablement errors into configuration errors
  • \n
  • ac9aeee Merge pull request #3249 from github/henrymercer/api-logging
  • \n
  • d49e837 Merge branch 'main' into henrymercer/api-logging
  • \n
  • 3d988b2 Pass minimal copy of core
  • \n
  • 8cc18ac Merge pull request #3250 from github/henrymercer/prefer-fs-delete
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3&new-version=4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2171/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2159/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -461,67 +1882,86 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2171/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2159/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2153", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2158", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/events", - "html_url": "https://github.com/hub4j/github-api/pull/2153", - "id": 3547050854, - "node_id": "PR_kwDOAAlq-s6vY_6j", - "number": 2153, - "title": "(Spike) Move v2 to new package. ", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2158/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2158/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2158/events", + "html_url": "https://github.com/hub4j/github-api/pull/2158", + "id": 3577020646, + "node_id": "PR_kwDOAAlq-s6w8RHt", + "number": 2158, + "title": "Chore(deps): Bump stefanzweifel/git-auto-commit-action from 6 to 7", "user": { - "login": "bitwiseman", - "id": 1958953, - "node_id": "MDQ6VXNlcjE5NTg5NTM=", - "avatar_url": "https://avatars.githubusercontent.com/u/1958953?v=4", + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/bitwiseman", - "html_url": "https://github.com/bitwiseman", - "followers_url": "https://api.github.com/users/bitwiseman/followers", - "following_url": "https://api.github.com/users/bitwiseman/following{/other_user}", - "gists_url": "https://api.github.com/users/bitwiseman/gists{/gist_id}", - "starred_url": "https://api.github.com/users/bitwiseman/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/bitwiseman/subscriptions", - "organizations_url": "https://api.github.com/users/bitwiseman/orgs", - "repos_url": "https://api.github.com/users/bitwiseman/repos", - "events_url": "https://api.github.com/users/bitwiseman/events{/privacy}", - "received_events_url": "https://api.github.com/users/bitwiseman/received_events", - "type": "User", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", "user_view_type": "public", "site_admin": false }, - "labels": [], - "state": "open", + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", + "default": false, + "description": "Pull requests that update Github_actions code" + } + ], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 0, - "created_at": "2025-10-24T00:06:08Z", - "updated_at": "2025-10-24T00:06:08Z", - "closed_at": null, - "author_association": "MEMBER", + "created_at": "2025-11-01T02:00:43Z", + "updated_at": "2026-01-23T19:01:10Z", + "closed_at": "2026-01-23T19:01:02Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2153", - "html_url": "https://github.com/hub4j/github-api/pull/2153", - "diff_url": "https://github.com/hub4j/github-api/pull/2153.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2153.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2158", + "html_url": "https://github.com/hub4j/github-api/pull/2158", + "diff_url": "https://github.com/hub4j/github-api/pull/2158.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2158.patch", + "merged_at": "2026-01-23T19:01:02Z" }, - "body": "# Description\r\n\r\nThis is spike considering what it would look like if we published each new version in it's own package. \r\nThe most complex code should be move to internal for reuse in both v1 and v2 public apis. \r\n\r\nMove most v2 to new package. \r\nThen pull rc1 back into existing package. \r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "body": "Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 6 to 7.\n
\nRelease notes\n

Sourced from stefanzweifel/git-auto-commit-action's releases.

\n
\n

v7.0.0

\n

Added

\n\n

Changed

\n\n

Dependency Updates

\n\n

v6.0.1

\n

Fixed

\n\n
\n
\n
\nChangelog\n

Sourced from stefanzweifel/git-auto-commit-action's changelog.

\n
\n

Changelog

\n

All notable changes to this project will be documented in this file.

\n

The format is based on Keep a Changelog\nand this project adheres to Semantic Versioning.

\n

Unreleased

\n
\n

TBD

\n
\n

v7.0.0 - 2025-10-12

\n

Added

\n\n

Changed

\n\n

Dependency Updates

\n\n

v6.0.1 - 2025-06-11

\n

Fixed

\n\n

v6.0.0 - 2025-06-10

\n

Added

\n
    \n
  • Throw error early if repository is in a detached state (#357)
  • \n
\n

Fixed

\n\n

Removed

\n
    \n
  • Remove support for create_branch, skip_checkout, skip_Fetch (#314)
  • \n
\n

v5.2.0 - 2025-04-19

\n

Added

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 28e16e8 Release preparations for v7 (#394)
  • \n
  • 698fd76 Merge pull request #391 from EliasBoulharts/custom-tag-message
  • \n
  • c40819a Update README
  • \n
  • d7ee275 Change internal variable names
  • \n
  • e8684eb Fix Tests
  • \n
  • 1949701 Merge branch 'master' into pr/391
  • \n
  • a88dc49 Merge pull request #388 from stefanzweifel/v7-next
  • \n
  • a531dec Merge pull request #386 from stefanzweifel/dependabot/github_actions/actions/...
  • \n
  • acbe8b1 Merge pull request #393 from stefanzweifel/v7-warn-detached-head
  • \n
  • d185485 Enable Detached State Check
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=stefanzweifel/git-auto-commit-action&package-manager=github_actions&previous-version=6&new-version=7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2153/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2158/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -532,67 +1972,86 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2153/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2158/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2146", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2157", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/events", - "html_url": "https://github.com/hub4j/github-api/pull/2146", - "id": 3453632014, - "node_id": "PR_kwDOAAlq-s6qgk4K", - "number": 2146, - "title": "[feat] Add support for the device authentication flow for github apps", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2157/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2157/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2157/events", + "html_url": "https://github.com/hub4j/github-api/pull/2157", + "id": 3577020608, + "node_id": "PR_kwDOAAlq-s6w8RHN", + "number": 2157, + "title": "Chore(deps): Bump actions/download-artifact from 5 to 6", "user": { - "login": "PierreBtz", - "id": 9881659, - "node_id": "MDQ6VXNlcjk4ODE2NTk=", - "avatar_url": "https://avatars.githubusercontent.com/u/9881659?v=4", + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/PierreBtz", - "html_url": "https://github.com/PierreBtz", - "followers_url": "https://api.github.com/users/PierreBtz/followers", - "following_url": "https://api.github.com/users/PierreBtz/following{/other_user}", - "gists_url": "https://api.github.com/users/PierreBtz/gists{/gist_id}", - "starred_url": "https://api.github.com/users/PierreBtz/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/PierreBtz/subscriptions", - "organizations_url": "https://api.github.com/users/PierreBtz/orgs", - "repos_url": "https://api.github.com/users/PierreBtz/repos", - "events_url": "https://api.github.com/users/PierreBtz/events{/privacy}", - "received_events_url": "https://api.github.com/users/PierreBtz/received_events", - "type": "User", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", "user_view_type": "public", "site_admin": false }, - "labels": [], - "state": "open", + "labels": [ + { + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", + "color": "000000", + "default": false, + "description": "Pull requests that update Github_actions code" + } + ], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 0, - "created_at": "2025-09-25T13:25:37Z", - "updated_at": "2025-09-26T09:05:45Z", - "closed_at": null, + "comments": 1, + "created_at": "2025-11-01T02:00:40Z", + "updated_at": "2025-11-12T23:00:14Z", + "closed_at": "2025-11-12T22:59:40Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, - "draft": true, + "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2146", - "html_url": "https://github.com/hub4j/github-api/pull/2146", - "diff_url": "https://github.com/hub4j/github-api/pull/2146.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2146.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2157", + "html_url": "https://github.com/hub4j/github-api/pull/2157", + "diff_url": "https://github.com/hub4j/github-api/pull/2157.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2157.patch", + "merged_at": "2025-11-12T22:59:40Z" }, - "body": "# Description\r\n\r\n*Opening as a draft since the tests are not ready and I have questions about them*\r\n\r\nThis PR provides support for the device authentication flow for github apps, as documented in https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app#using-the-device-flow-to-generate-a-user-access-token (access token generation) and here https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/refreshing-user-access-tokens#refreshing-a-user-access-token-with-a-refresh-token (refresh token).\r\n\r\nThis is needed when developing java CLIs that need to authenticate to GitHub through a GitHub application.\r\n\r\nReproducing here the documentation to help with the understanding:\r\n\r\n```\r\n In order to authenticate to GitHub as an user using the device flow of your GitHub App, you need to use the <<>>\r\n authentication provider that will take care of retrieving a user access token and refresh it when needed for you.\r\n You need to handle two things by yourself:\r\n 1. You need to provide a <<>> that will be called when a new user access token is retrieved (either on initial creation or on refresh).\r\n It is up to you to store the credential object securely the library does not take care of that.\r\n 2. You need to provide a <<>> that will be called when a user interaction is needed to complete the device flow.\r\n The library provides a basic implementation <<>> that will log the instructions to the console but you could imagine a more complex\r\n implementation that would for example open the user browser automatically (or call some automation that will input the information automatically for instance).\r\n\r\n Here is a complete example to get started:\r\n\r\n+-----+\r\n var clientId = \"\";\r\n var objectMapper = new ObjectMapper();\r\n objectMapper.registerModule(new JavaTimeModule());\r\n\r\n // for demo purpose only, this is not proper secret management!!!\r\n var appCredentialsFile = Path.of(\"/tmp/github-app-credentials.json\");\r\n DeviceFlowGithubAppCredentials appCredentials;\r\n if (Files.exists(appCredentialsFile)) {\r\n appCredentials = objectMapper.readValue(appCredentialsFile.toFile(), DeviceFlowGithubAppCredentials.class);\r\n } else {\r\n appCredentials = EMPTY_CREDENTIALS;\r\n }\r\n\r\n var gh = new GitHubBuilder().withAuthorizationProvider(\r\n new DeviceFlowGithubAppAuthorizationProvider(clientId, appCredentials, ac -> {\r\n // in this basic example, we serialize the credentials as json to a file\r\n // this is not proper secret management and you should probably use something more secure\r\n try {\r\n objectMapper.writeValue(appCredentialsFile.toFile(), ac);\r\n } catch (IOException e) {\r\n throw new RuntimeException(e);\r\n }\r\n }, new LoggerDeviceFlowGithubAppInputManager())).build();\r\n+-----+\r\n``` \r\n\r\nOpened questions I have:\r\n\r\n* I'm not too happy that the main class (`DeviceFlowGithubAppAuthorizationProvider`) cannot be in the authorization package (needs access to a package protected method).\r\n* I'm not too sure how to process with tests: I cannot use the recording method since the authorization process is not going through the api endpoints but through the UI ones (`https://github.com/...`). I didn't find anything in the base class test that would help with this. Also I have to use the `.setRawUrlPath(\"https://github.com/login/oauth/access_token\")` which cannot be intercepted as is obviously. This is not only a problem for tests but also for on prem Github and my current thinking is that I need to enrich the API and the testing framework to support a `uiUrl` that would be the equivalent of the `apiUrl` for the UI.\r\n\r\nSince this starts to widen the impact of this change I'm opening this draft to discuss the potential approaches before going further.\r\n\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "body": "Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 5 to 6.\n
\nRelease notes\n

Sourced from actions/download-artifact's releases.

\n
\n

v6.0.0

\n

What's Changed

\n

BREAKING CHANGE: this update supports Node v24.x. This is not a breaking change per-se but we're treating it as such.

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/actions/download-artifact/compare/v5...v6.0.0

\n
\n
\n
\nCommits\n
    \n
  • 018cc2c Merge pull request #438 from actions/danwkennedy/prepare-6.0.0
  • \n
  • 815651c Revert "Remove github.dep.yml"
  • \n
  • bb3a066 Remove github.dep.yml
  • \n
  • fa1ce46 Prepare v6.0.0
  • \n
  • 4a24838 Merge pull request #431 from danwkennedy/patch-1
  • \n
  • 5e3251c Readme: spell out the first use of GHES
  • \n
  • abefc31 Merge pull request #424 from actions/yacaovsnc/update_readme
  • \n
  • ac43a60 Update README with artifact extraction details
  • \n
  • de96f46 Merge pull request #417 from actions/yacaovsnc/update_readme
  • \n
  • 7993cb4 Remove migration guide for artifact download changes
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/download-artifact&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2146/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2157/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -603,22 +2062,22 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2146/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2157/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2099", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2152", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/events", - "html_url": "https://github.com/hub4j/github-api/pull/2099", - "id": 3037229321, - "node_id": "PR_kwDOAAlq-s6U0PLi", - "number": 2099, - "title": "Refactor pagination", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2152/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2152/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2152/events", + "html_url": "https://github.com/hub4j/github-api/pull/2152", + "id": 3546846920, + "node_id": "PR_kwDOAAlq-s6vYTSI", + "number": 2152, + "title": "Improve ArchUnit class name test", "user": { "login": "bitwiseman", "id": 1958953, @@ -641,110 +2100,29 @@ "site_admin": false }, "labels": [], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, "comments": 1, - "created_at": "2025-05-03T07:23:17Z", - "updated_at": "2025-09-20T08:14:09Z", - "closed_at": null, + "created_at": "2025-10-23T22:37:24Z", + "updated_at": "2025-10-24T15:20:33Z", + "closed_at": "2025-10-24T15:20:20Z", "author_association": "MEMBER", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2099", - "html_url": "https://github.com/hub4j/github-api/pull/2099", - "diff_url": "https://github.com/hub4j/github-api/pull/2099.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2099.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2152", + "html_url": "https://github.com/hub4j/github-api/pull/2152", + "diff_url": "https://github.com/hub4j/github-api/pull/2152.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2152.patch", + "merged_at": "2025-10-24T15:20:20Z" }, "body": "# Description\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2099/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2099/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1986", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/events", - "html_url": "https://github.com/hub4j/github-api/pull/1986", - "id": 2697030696, - "node_id": "PR_kwDOAAlq-s6DSCb3", - "number": 1986, - "title": "initial feature add", - "user": { - "login": "gitPushPuppets", - "id": 49495486, - "node_id": "MDQ6VXNlcjQ5NDk1NDg2", - "avatar_url": "https://avatars.githubusercontent.com/u/49495486?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/gitPushPuppets", - "html_url": "https://github.com/gitPushPuppets", - "followers_url": "https://api.github.com/users/gitPushPuppets/followers", - "following_url": "https://api.github.com/users/gitPushPuppets/following{/other_user}", - "gists_url": "https://api.github.com/users/gitPushPuppets/gists{/gist_id}", - "starred_url": "https://api.github.com/users/gitPushPuppets/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/gitPushPuppets/subscriptions", - "organizations_url": "https://api.github.com/users/gitPushPuppets/orgs", - "repos_url": "https://api.github.com/users/gitPushPuppets/repos", - "events_url": "https://api.github.com/users/gitPushPuppets/events{/privacy}", - "received_events_url": "https://api.github.com/users/gitPushPuppets/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [ - { - "id": 4789870627, - "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", - "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", - "name": "work-abandoned", - "color": "000000", - "default": false, - "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." - } - ], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 1, - "created_at": "2024-11-27T04:41:38Z", - "updated_at": "2025-09-04T14:41:30Z", - "closed_at": null, - "author_association": "NONE", - "type": null, - "active_lock_reason": null, - "draft": true, - "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/1986", - "html_url": "https://github.com/hub4j/github-api/pull/1986", - "diff_url": "https://github.com/hub4j/github-api/pull/1986.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/1986.patch", - "merged_at": null - }, - "body": "# Description\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1986/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2152/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -755,138 +2133,67 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1986/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2152/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2108", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2151", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/events", - "html_url": "https://github.com/hub4j/github-api/pull/2108", - "id": 3148050956, - "node_id": "PR_kwDOAAlq-s6ancHC", - "number": 2108, - "title": "Add missing properties to GHAsset and GHRelease", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2151/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2151/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2151/events", + "html_url": "https://github.com/hub4j/github-api/pull/2151", + "id": 3495810417, + "node_id": "PR_kwDOAAlq-s6suMRC", + "number": 2151, + "title": "Add DYNAMIC event type to GHEvent enum", "user": { - "login": "solonovamax", - "id": 46940694, - "node_id": "MDQ6VXNlcjQ2OTQwNjk0", - "avatar_url": "https://avatars.githubusercontent.com/u/46940694?v=4", + "login": "kkroner8451", + "id": 14809736, + "node_id": "MDQ6VXNlcjE0ODA5NzM2", + "avatar_url": "https://avatars.githubusercontent.com/u/14809736?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/solonovamax", - "html_url": "https://github.com/solonovamax", - "followers_url": "https://api.github.com/users/solonovamax/followers", - "following_url": "https://api.github.com/users/solonovamax/following{/other_user}", - "gists_url": "https://api.github.com/users/solonovamax/gists{/gist_id}", - "starred_url": "https://api.github.com/users/solonovamax/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/solonovamax/subscriptions", - "organizations_url": "https://api.github.com/users/solonovamax/orgs", - "repos_url": "https://api.github.com/users/solonovamax/repos", - "events_url": "https://api.github.com/users/solonovamax/events{/privacy}", - "received_events_url": "https://api.github.com/users/solonovamax/received_events", + "url": "https://api.github.com/users/kkroner8451", + "html_url": "https://github.com/kkroner8451", + "followers_url": "https://api.github.com/users/kkroner8451/followers", + "following_url": "https://api.github.com/users/kkroner8451/following{/other_user}", + "gists_url": "https://api.github.com/users/kkroner8451/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kkroner8451/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kkroner8451/subscriptions", + "organizations_url": "https://api.github.com/users/kkroner8451/orgs", + "repos_url": "https://api.github.com/users/kkroner8451/repos", + "events_url": "https://api.github.com/users/kkroner8451/events{/privacy}", + "received_events_url": "https://api.github.com/users/kkroner8451/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": [], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 4, - "created_at": "2025-06-15T20:42:27Z", - "updated_at": "2025-07-30T16:23:40Z", - "closed_at": null, + "comments": 1, + "created_at": "2025-10-08T14:57:53Z", + "updated_at": "2025-10-23T00:51:40Z", + "closed_at": "2025-10-23T00:51:32Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2108", - "html_url": "https://github.com/hub4j/github-api/pull/2108", - "diff_url": "https://github.com/hub4j/github-api/pull/2108.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2108.patch", - "merged_at": null - }, - "body": "# Description\r\n\r\nAdds missing fields for the `GHAsset` and `GHRelease` classes.\r\nSee: https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28\r\n\r\nI didn't bother adding tests because it's just new fields/getters. \r\n\r\nFixes #2102\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", - "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2108/reactions", - "total_count": 0, - "+1": 0, - "-1": 0, - "laugh": 0, - "hooray": 0, - "confused": 0, - "heart": 0, - "rocket": 0, - "eyes": 0 - }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2108/timeline", - "performed_via_github_app": null, - "state_reason": null, - "score": 1 - }, - { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2098", - "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/events", - "html_url": "https://github.com/hub4j/github-api/pull/2098", - "id": 3033530320, - "node_id": "PR_kwDOAAlq-s6Un7vp", - "number": 2098, - "title": "Add polymorphic deserialization for the GHAppInstallation account field", - "user": { - "login": "anujhydrabadi", - "id": 129152617, - "node_id": "U_kgDOB7K2aQ", - "avatar_url": "https://avatars.githubusercontent.com/u/129152617?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/anujhydrabadi", - "html_url": "https://github.com/anujhydrabadi", - "followers_url": "https://api.github.com/users/anujhydrabadi/followers", - "following_url": "https://api.github.com/users/anujhydrabadi/following{/other_user}", - "gists_url": "https://api.github.com/users/anujhydrabadi/gists{/gist_id}", - "starred_url": "https://api.github.com/users/anujhydrabadi/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/anujhydrabadi/subscriptions", - "organizations_url": "https://api.github.com/users/anujhydrabadi/orgs", - "repos_url": "https://api.github.com/users/anujhydrabadi/repos", - "events_url": "https://api.github.com/users/anujhydrabadi/events{/privacy}", - "received_events_url": "https://api.github.com/users/anujhydrabadi/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "labels": [], - "state": "open", - "locked": false, - "assignee": null, - "assignees": [], - "milestone": null, - "comments": 0, - "created_at": "2025-05-01T09:37:33Z", - "updated_at": "2025-05-01T09:38:01Z", - "closed_at": null, - "author_association": "CONTRIBUTOR", - "type": null, - "active_lock_reason": null, - "draft": true, - "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2098", - "html_url": "https://github.com/hub4j/github-api/pull/2098", - "diff_url": "https://github.com/hub4j/github-api/pull/2098.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2098.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2151", + "html_url": "https://github.com/hub4j/github-api/pull/2151", + "diff_url": "https://github.com/hub4j/github-api/pull/2151.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2151.patch", + "merged_at": "2025-10-23T00:51:32Z" }, - "body": "# Description\r\nFixes #1497 \r\nRecovering PR #1522 \r\nThere is a problem: this works fine for events, but when deserializing App Installation GET API responses, the `type` field (based on which we identify whether the `account` is User or Org) gets unset to `null`. The `account` polymorphic deserialization part works fine though. Perhaps there is a difference in how we are using Jackson at both places (events vs regular API responses), but I have not been able to figure it out yet. \r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "body": "\r\n# Description\r\n\r\nAdded `DYNAMIC` event type to GHEvent enum for handling new `dynamic` events. \r\nFixes #2150 \r\n\r\n- No docs linked as I can't find any published docs, but looking at the data it appears to be dynamic runs of workflows for things like Dependabot, etc. \r\n- No tests added as not all enum values currently had unit tests.\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2098/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2151/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -897,22 +2204,22 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2098/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2151/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2065", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2149", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/events", - "html_url": "https://github.com/hub4j/github-api/pull/2065", - "id": 2934401236, - "node_id": "PR_kwDOAAlq-s6PaV84", - "number": 2065, - "title": "Chore(deps): Bump spotbugs.version from 4.8.6 to 4.9.3", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2149/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2149/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2149/events", + "html_url": "https://github.com/hub4j/github-api/pull/2149", + "id": 3471705142, + "node_id": "PR_kwDOAAlq-s6rdSoE", + "number": 2149, + "title": "Chore(deps): Bump org.apache.commons:commons-lang3 from 3.18.0 to 3.19.0", "user": { "login": "dependabot[bot]", "id": 49699333, @@ -954,29 +2261,29 @@ "description": "Pull requests that update Java code" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 3, - "created_at": "2025-03-20T07:38:54Z", - "updated_at": "2025-05-01T02:35:32Z", - "closed_at": null, + "comments": 1, + "created_at": "2025-10-01T02:01:20Z", + "updated_at": "2025-10-23T00:59:43Z", + "closed_at": "2025-10-23T00:59:35Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/2065", - "html_url": "https://github.com/hub4j/github-api/pull/2065", - "diff_url": "https://github.com/hub4j/github-api/pull/2065.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/2065.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2149", + "html_url": "https://github.com/hub4j/github-api/pull/2149", + "diff_url": "https://github.com/hub4j/github-api/pull/2149.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2149.patch", + "merged_at": "2025-10-23T00:59:35Z" }, - "body": "Bumps `spotbugs.version` from 4.8.6 to 4.9.3.\nUpdates `com.github.spotbugs:spotbugs-annotations` from 4.8.6 to 4.9.3\n
\nRelease notes\n

Sourced from com.github.spotbugs:spotbugs-annotations's releases.

\n
\n

SpotBugs 4.9.3

\n

CHANGELOG

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

CHECKSUM

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
filechecksum (sha256)
spotbugs-4.9.3-javadoc.jar3d0d103724cbaaffc27f17d28d9b17f8972fb378397f8f04f6f05268bde110b7
spotbugs-4.9.3-sources.jar0aa5c905469eb578a3dbe09dcf704cf892568610cdb58550b142d658e37a29d4
spotbugs-4.9.3.tgzd464d56050cf1dbda032e9482e1188f7cd7b7646eaff79c2e6cbe4d6822f4d9f
spotbugs-4.9.3.zip3b2dcf86f97d701700121cee4bd22305d4b54fd9ed7666fa0f53933a4ab92251
spotbugs-annotations-4.9.3-javadoc.jar5fce79dc01a97aae84670922dd3581aa621b980535e4f6695a71db553dcb9cb4
spotbugs-annotations-4.9.3-sources.jar990ad9f3500499a99466b7c1e01284f4f41d1499358e7dc38c8defc59dab114c
spotbugs-annotations.jar13532bfe2f45fcd491432221df72d9cd0efb8f987c9245e12befa192c8925ce3
spotbugs-ant-4.9.3-javadoc.jar346eb5215f9d157ab46c3216a783416e2fa2e8c9d4458143267fb518f81c7d77
spotbugs-ant-4.9.3-sources.jar591073402e4110093a380169acd3f33b26c2f893c2eaed5a6460d9be0b26014e
spotbugs-ant.jar3a6f453696294d5314e648d4891d35e34315e11cb63c758a1601021cc0d803d1
spotbugs.jar710e8b98f1ae23cdb71aaaf07e8d71fb63b44f2bbbaa1df3c3ba0de62aba6ec9
test-harness-4.9.3-javadoc.jar57f51147e289b5c6493f844beaac97cde57773a1d16ce064e9deb8963b3f99ce
test-harness-4.9.3-sources.jar22688f14ef808cde65cc46e86d41c617fc397fc4967516006a73ce8bad658b9f
test-harness-4.9.3.jar9bf5bba9546e4f89032006261dd2921a79fc3044e473ee1fa73af870cb43da15
test-harness-core-4.9.3-javadoc.jar15aac012f3a8c8d6600075efe824aecab8233778e58345fecca65d7970256311
test-harness-core-4.9.3-sources.jar13825de35190089490c7e290b52bafe6a9b08ab431177c0191dae9cf2a88a55d
test-harness-core-4.9.3.jar3c74cc6d2d6f999d403f00f97685587e617d2bf1bfc348bbd0597e785c83feec
test-harness-jupiter-4.9.3-javadoc.jara8f276fb01743b8dc9f8cd6b517ae0748e38f673e31615a923c9c61f5fd9de58
test-harness-jupiter-4.9.3-sources.jar0aefbc5c8bd406e5dc0b1d59bc3afc6889c02010d486b22242f4f19a1a935800
test-harness-jupiter-4.9.3.jar0e9509de32f8fbc94cf088dbee80394fa93807a766532568e652cd622ce737c8
\n

SpotBugs 4.9.2

\n

CHANGELOG

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from com.github.spotbugs:spotbugs-annotations's changelog.

\n
\n

4.9.3 - 2025-03-14

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

4.9.2 - 2025-03-01

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n
    \n
  • Removed the TLW_TWO_LOCK_NOTIFY, LI_LAZY_INIT_INSTANCE, BRSA_BAD_RESULTSET_ACCESS, BC_NULL_INSTANCEOF, NP_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR and RCN_REDUNDANT_CHECKED_NULL_COMPARISON deprecated bug patterns.
  • \n
\n

4.9.1 - 2025-02-02

\n

Added

\n
    \n
  • New detector SharedVariableAtomicityDetector for new bug types AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE, AT_NONATOMIC_64BIT_PRIMITIVE and AT_STALE_THREAD_WRITE_OF_PRIMITIVE (See SEI CERT rules VNA00-J, VNA02-J and VNA05-J).
  • \n
  • New detector FindHiddenMethod for bug type HSM_HIDING_METHOD. This bug is reported whenever a subclass method hides the static method of super class. (See SEI CERT MET07-J).
  • \n
\n

Fixed

\n
    \n
  • Fixed the parsing of generics methods in ThrowingExceptions (#3267)
  • \n
  • Accept the 1st parameter of java.util.concurrent.CompletableFuture's completeOnTimeout(), getNow() and obtrudeValue() functions as nullable (#1001).
  • \n
  • Fixed the analysis error when FindReturnRef was checking instructions corresponding to a CFG branch that was optimized away (#3266)
  • \n
  • Added execute file permission to files in the distribution archive (#3274)
  • \n
  • Fixed a stack overflow in MultipleInstantiationsOfSingletons when a singleton initializer makes recursive calls (#3280)
  • \n
  • Fixed NPE in FindReturnRef on inner class fields (#3283)
  • \n
  • Fixed NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE false positive when add edu.umd.cs.findbugs.annotations.Nullable (#3243)
  • \n
\n

4.9.0 - 2025-01-15

\n

Added

\n
    \n
  • Updated the SuppressFBWarnings annotation to support finer grained bug suppressions (#3102)
  • \n
  • SimpleDateFormat, DateTimeFormatter, FastDateFormat string check for bad combinations of flag formatting (#637)
  • \n
  • New detector ResourceInMultipleThreadsDetector and introduced new bug type:\n
      \n
    • AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD is reported in case of unsafe resource access in multiple threads.
    • \n
    \n
  • \n
\n

Fixed

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1f6a719 release v4.9.3
  • \n
  • 30f22d8 fix(deps): update junit5 monorepo to v5.12.1 (#3357)
  • \n
  • 4b0cfff cleanup: remove redundant implementations of getDetectorClassName() (#3352)
  • \n
  • bd996f4 chore(deps): update dependency com.diffplug.gradle:goomph to v4.3.0 (#3355)
  • \n
  • e46c442 Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3353)
  • \n
  • 7450785 Introduce UselessSuppressionDetector to report the useless suppressions
  • \n
  • 830e10c fix(deps): update dependency checkstyle to v10.21.4 (#3347)
  • \n
  • b5c7686 fix(deps): update dependency org.checkerframework:checker-qual to v3.49.1 (#3...
  • \n
  • c4b59b1 chore(deps): update sphinxdoc/sphinx docker tag to v8.2.3 (#3344)
  • \n
  • 7fd6fa4 fix(deps): update mockito monorepo to v5.16.0 (#3345)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\nUpdates `com.github.spotbugs:spotbugs` from 4.8.6 to 4.9.3\n
\nRelease notes\n

Sourced from com.github.spotbugs:spotbugs's releases.

\n
\n

SpotBugs 4.9.3

\n

CHANGELOG

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

CHECKSUM

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
filechecksum (sha256)
spotbugs-4.9.3-javadoc.jar3d0d103724cbaaffc27f17d28d9b17f8972fb378397f8f04f6f05268bde110b7
spotbugs-4.9.3-sources.jar0aa5c905469eb578a3dbe09dcf704cf892568610cdb58550b142d658e37a29d4
spotbugs-4.9.3.tgzd464d56050cf1dbda032e9482e1188f7cd7b7646eaff79c2e6cbe4d6822f4d9f
spotbugs-4.9.3.zip3b2dcf86f97d701700121cee4bd22305d4b54fd9ed7666fa0f53933a4ab92251
spotbugs-annotations-4.9.3-javadoc.jar5fce79dc01a97aae84670922dd3581aa621b980535e4f6695a71db553dcb9cb4
spotbugs-annotations-4.9.3-sources.jar990ad9f3500499a99466b7c1e01284f4f41d1499358e7dc38c8defc59dab114c
spotbugs-annotations.jar13532bfe2f45fcd491432221df72d9cd0efb8f987c9245e12befa192c8925ce3
spotbugs-ant-4.9.3-javadoc.jar346eb5215f9d157ab46c3216a783416e2fa2e8c9d4458143267fb518f81c7d77
spotbugs-ant-4.9.3-sources.jar591073402e4110093a380169acd3f33b26c2f893c2eaed5a6460d9be0b26014e
spotbugs-ant.jar3a6f453696294d5314e648d4891d35e34315e11cb63c758a1601021cc0d803d1
spotbugs.jar710e8b98f1ae23cdb71aaaf07e8d71fb63b44f2bbbaa1df3c3ba0de62aba6ec9
test-harness-4.9.3-javadoc.jar57f51147e289b5c6493f844beaac97cde57773a1d16ce064e9deb8963b3f99ce
test-harness-4.9.3-sources.jar22688f14ef808cde65cc46e86d41c617fc397fc4967516006a73ce8bad658b9f
test-harness-4.9.3.jar9bf5bba9546e4f89032006261dd2921a79fc3044e473ee1fa73af870cb43da15
test-harness-core-4.9.3-javadoc.jar15aac012f3a8c8d6600075efe824aecab8233778e58345fecca65d7970256311
test-harness-core-4.9.3-sources.jar13825de35190089490c7e290b52bafe6a9b08ab431177c0191dae9cf2a88a55d
test-harness-core-4.9.3.jar3c74cc6d2d6f999d403f00f97685587e617d2bf1bfc348bbd0597e785c83feec
test-harness-jupiter-4.9.3-javadoc.jara8f276fb01743b8dc9f8cd6b517ae0748e38f673e31615a923c9c61f5fd9de58
test-harness-jupiter-4.9.3-sources.jar0aefbc5c8bd406e5dc0b1d59bc3afc6889c02010d486b22242f4f19a1a935800
test-harness-jupiter-4.9.3.jar0e9509de32f8fbc94cf088dbee80394fa93807a766532568e652cd622ce737c8
\n

SpotBugs 4.9.2

\n

CHANGELOG

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from com.github.spotbugs:spotbugs's changelog.

\n
\n

4.9.3 - 2025-03-14

\n

Added

\n
    \n
  • Introduced UselessSuppressionDetector to report the useless annotations instead of NoteSuppressedWarnings (#3348)
  • \n
\n

Fixed

\n
    \n
  • Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3351)
  • \n
\n

4.9.2 - 2025-03-01

\n

Added

\n
    \n
  • Reporting useless @SuppressFBWarnings annotations (#641)
  • \n
\n

Fixed

\n
    \n
  • Fixed html bug descriptions for AT_STALE_THREAD_WRITE_OF_PRIMITIVE and AT_NONATOMIC_64BIT_PRIMITIVE (#3303)
  • \n
  • Fixed an HSM_HIDING_METHOD false positive when ECJ generates a synthetic method for an enum switch (#3305)
  • \n
  • Fix AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD false negatives, detector depending on method order.
  • \n
  • Fix THROWS_METHOD_THROWS_CLAUSE_THROWABLE reported in a method calling MethodHandle.invokeExact due to its polymorphic signature (#3309)
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive in inner class (#3310).
  • \n
  • Fix AT_STALE_THREAD_WRITE_OF_PRIMITIVE false positive for ECJ compiled enum switches (#3316)
  • \n
  • Fix RC_REF_COMPARISON false positive with Lombok With annotation (#3319)
  • \n
  • Avoid calling File.getCanonicalPath twice to improve performance (#3325)
  • \n
  • Fix MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE false positive when the overridable method is outside the class (#3328).
  • \n
  • Fix NullPointerException thrown from ThrowingExceptions detector (#3337).
  • \n
\n

Removed

\n
    \n
  • Removed the TLW_TWO_LOCK_NOTIFY, LI_LAZY_INIT_INSTANCE, BRSA_BAD_RESULTSET_ACCESS, BC_NULL_INSTANCEOF, NP_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR and RCN_REDUNDANT_CHECKED_NULL_COMPARISON deprecated bug patterns.
  • \n
\n

4.9.1 - 2025-02-02

\n

Added

\n
    \n
  • New detector SharedVariableAtomicityDetector for new bug types AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE, AT_NONATOMIC_64BIT_PRIMITIVE and AT_STALE_THREAD_WRITE_OF_PRIMITIVE (See SEI CERT rules VNA00-J, VNA02-J and VNA05-J).
  • \n
  • New detector FindHiddenMethod for bug type HSM_HIDING_METHOD. This bug is reported whenever a subclass method hides the static method of super class. (See SEI CERT MET07-J).
  • \n
\n

Fixed

\n
    \n
  • Fixed the parsing of generics methods in ThrowingExceptions (#3267)
  • \n
  • Accept the 1st parameter of java.util.concurrent.CompletableFuture's completeOnTimeout(), getNow() and obtrudeValue() functions as nullable (#1001).
  • \n
  • Fixed the analysis error when FindReturnRef was checking instructions corresponding to a CFG branch that was optimized away (#3266)
  • \n
  • Added execute file permission to files in the distribution archive (#3274)
  • \n
  • Fixed a stack overflow in MultipleInstantiationsOfSingletons when a singleton initializer makes recursive calls (#3280)
  • \n
  • Fixed NPE in FindReturnRef on inner class fields (#3283)
  • \n
  • Fixed NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE false positive when add edu.umd.cs.findbugs.annotations.Nullable (#3243)
  • \n
\n

4.9.0 - 2025-01-15

\n

Added

\n
    \n
  • Updated the SuppressFBWarnings annotation to support finer grained bug suppressions (#3102)
  • \n
  • SimpleDateFormat, DateTimeFormatter, FastDateFormat string check for bad combinations of flag formatting (#637)
  • \n
  • New detector ResourceInMultipleThreadsDetector and introduced new bug type:\n
      \n
    • AT_UNSAFE_RESOURCE_ACCESS_IN_THREAD is reported in case of unsafe resource access in multiple threads.
    • \n
    \n
  • \n
\n

Fixed

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 1f6a719 release v4.9.3
  • \n
  • 30f22d8 fix(deps): update junit5 monorepo to v5.12.1 (#3357)
  • \n
  • 4b0cfff cleanup: remove redundant implementations of getDetectorClassName() (#3352)
  • \n
  • bd996f4 chore(deps): update dependency com.diffplug.gradle:goomph to v4.3.0 (#3355)
  • \n
  • e46c442 Do not report US_USELESS_SUPPRESSION_ON_METHOD on synthetic methods (#3353)
  • \n
  • 7450785 Introduce UselessSuppressionDetector to report the useless suppressions
  • \n
  • 830e10c fix(deps): update dependency checkstyle to v10.21.4 (#3347)
  • \n
  • b5c7686 fix(deps): update dependency org.checkerframework:checker-qual to v3.49.1 (#3...
  • \n
  • c4b59b1 chore(deps): update sphinxdoc/sphinx docker tag to v8.2.3 (#3344)
  • \n
  • 7fd6fa4 fix(deps): update mockito monorepo to v5.16.0 (#3345)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\n\n> **Note**\n> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.\n", + "body": "Bumps org.apache.commons:commons-lang3 from 3.18.0 to 3.19.0.\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.apache.commons:commons-lang3&package-manager=maven&previous-version=3.18.0&new-version=3.19.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/2065/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2149/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -987,77 +2294,86 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2065/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2149/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1917", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2148", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/events", - "html_url": "https://github.com/hub4j/github-api/pull/1917", - "id": 2492934092, - "node_id": "PR_kwDOAAlq-s55wQBP", - "number": 1917, - "title": "Support setting & checking AutomatedSecurityFixes", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2148/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2148/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2148/events", + "html_url": "https://github.com/hub4j/github-api/pull/2148", + "id": 3471704908, + "node_id": "PR_kwDOAAlq-s6rdSkx", + "number": 2148, + "title": "Chore(deps): Bump org.junit:junit-bom from 5.13.4 to 6.0.0", "user": { - "login": "ranma2913", - "id": 4295880, - "node_id": "MDQ6VXNlcjQyOTU4ODA=", - "avatar_url": "https://avatars.githubusercontent.com/u/4295880?v=4", + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/ranma2913", - "html_url": "https://github.com/ranma2913", - "followers_url": "https://api.github.com/users/ranma2913/followers", - "following_url": "https://api.github.com/users/ranma2913/following{/other_user}", - "gists_url": "https://api.github.com/users/ranma2913/gists{/gist_id}", - "starred_url": "https://api.github.com/users/ranma2913/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/ranma2913/subscriptions", - "organizations_url": "https://api.github.com/users/ranma2913/orgs", - "repos_url": "https://api.github.com/users/ranma2913/repos", - "events_url": "https://api.github.com/users/ranma2913/events{/privacy}", - "received_events_url": "https://api.github.com/users/ranma2913/received_events", - "type": "User", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 4789870627, - "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", - "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", - "name": "work-abandoned", - "color": "000000", + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391625, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjI1", + "url": "https://api.github.com/repos/hub4j/github-api/labels/java", + "name": "java", + "color": "ffa221", "default": false, - "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." + "description": "Pull requests that update Java code" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 3, - "created_at": "2024-08-28T20:27:53Z", - "updated_at": "2025-01-14T18:08:46Z", - "closed_at": null, - "author_association": "NONE", + "comments": 2, + "created_at": "2025-10-01T02:01:14Z", + "updated_at": "2025-10-23T00:59:15Z", + "closed_at": "2025-10-23T00:58:56Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, - "draft": true, + "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/1917", - "html_url": "https://github.com/hub4j/github-api/pull/1917", - "diff_url": "https://github.com/hub4j/github-api/pull/1917.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/1917.patch", + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2148", + "html_url": "https://github.com/hub4j/github-api/pull/2148", + "diff_url": "https://github.com/hub4j/github-api/pull/2148.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2148.patch", "merged_at": null }, - "body": "https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#check-if-automated-security-fixes-are-enabled-for-a-repository\r\n\r\n# Description\r\n\r\nFixes #1916\r\n\r\nThis change will support Support Endpoints:\r\n\r\n https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#check-if-automated-security-fixes-are-enabled-for-a-repository\r\n https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#enable-automated-security-fixes\r\n https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#disable-automated-security-fixes\r\n\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "body": "Bumps [org.junit:junit-bom](https://github.com/junit-team/junit-framework) from 5.13.4 to 6.0.0.\n
\nRelease notes\n

Sourced from org.junit:junit-bom's releases.

\n
\n

JUnit 6.0.0 = Platform 6.0.0 + Jupiter 6.0.0 + Vintage 6.0.0

\n

See Release Notes.

\n

New Contributors

\n\n

Full Changelog: https://github.com/junit-team/junit-framework/compare/r5.14.0...r6.0.0

\n

JUnit 6.0.0-RC3 = Platform 6.0.0-RC3 + Jupiter 6.0.0-RC3 + Vintage 6.0.0-RC3

\n

See Release Notes.

\n

New Contributors

\n\n

Full Changelog: https://github.com/junit-team/junit-framework/compare/r6.0.0-RC2...r6.0.0-RC3

\n

JUnit 6.0.0-RC2 = Platform 6.0.0-RC2 + Jupiter 6.0.0-RC2 + Vintage 6.0.0-RC2

\n

See Release Notes.

\n

Full Changelog: https://github.com/junit-team/junit-framework/compare/r6.0.0-RC1...r6.0.0-RC2

\n

JUnit 6.0.0-RC1 = Platform 6.0.0-RC1 + Jupiter 6.0.0-RC1 + Vintage 6.0.0-RC1

\n

See Release Notes.

\n

New Contributors

\n\n

Full Changelog: https://github.com/junit-team/junit-framework/compare/r6.0.0-M2...r6.0.0-RC1

\n

JUnit 6.0.0-M2 = Platform 6.0.0-M2 + Jupiter 6.0.0-M2 + Vintage 6.0.0-M2

\n

See Release Notes.

\n

New Contributors

\n\n

Full Changelog: https://github.com/junit-team/junit-framework/compare/r6.0.0-M1...r6.0.0-M2

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 4f79594 Release 6.0.0
  • \n
  • 55af30a Revert "Use develop/6.x branch for junit-examples during release build"
  • \n
  • df3cfdd Release 5.14.0
  • \n
  • fcb84a2 Disable backward compatibility check when offline
  • \n
  • c9c8344 Prune 5.14.0 release notes
  • \n
  • 03d8a72 Update broken link to using API Gaurdian with bndtools
  • \n
  • 3a0b29b Use temporary JUnit 6 logo
  • \n
  • 6603caa Rename eclipseClasspath to eclipseConventions to avoid confusion
  • \n
  • ab3470b Make sealed MediaType work in Eclipse
  • \n
  • a8cd41e Remove annotations not visible in Eclipse
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.junit:junit-bom&package-manager=maven&previous-version=5.13.4&new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1917/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2148/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1068,77 +2384,86 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1917/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2148/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1787", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2147", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/events", - "html_url": "https://github.com/hub4j/github-api/pull/1787", - "id": 2122147185, - "node_id": "PR_kwDOAAlq-s5mNyo1", - "number": 1787, - "title": "Code Scanning API support", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2147/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2147/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2147/events", + "html_url": "https://github.com/hub4j/github-api/pull/2147", + "id": 3471704649, + "node_id": "PR_kwDOAAlq-s6rdShP", + "number": 2147, + "title": "Chore(deps): Bump codecov/codecov-action from 5.5.0 to 5.5.1", "user": { - "login": "wwong", - "id": 1160302, - "node_id": "MDQ6VXNlcjExNjAzMDI=", - "avatar_url": "https://avatars.githubusercontent.com/u/1160302?v=4", + "login": "dependabot[bot]", + "id": 49699333, + "node_id": "MDM6Qm90NDk2OTkzMzM=", + "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/wwong", - "html_url": "https://github.com/wwong", - "followers_url": "https://api.github.com/users/wwong/followers", - "following_url": "https://api.github.com/users/wwong/following{/other_user}", - "gists_url": "https://api.github.com/users/wwong/gists{/gist_id}", - "starred_url": "https://api.github.com/users/wwong/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/wwong/subscriptions", - "organizations_url": "https://api.github.com/users/wwong/orgs", - "repos_url": "https://api.github.com/users/wwong/repos", - "events_url": "https://api.github.com/users/wwong/events{/privacy}", - "received_events_url": "https://api.github.com/users/wwong/received_events", - "type": "User", + "url": "https://api.github.com/users/dependabot%5Bbot%5D", + "html_url": "https://github.com/apps/dependabot", + "followers_url": "https://api.github.com/users/dependabot%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dependabot%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/dependabot%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/dependabot%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/dependabot%5Bbot%5D/received_events", + "type": "Bot", "user_view_type": "public", "site_admin": false }, "labels": [ { - "id": 4789870627, - "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", - "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", - "name": "work-abandoned", + "id": 1576019209, + "node_id": "MDU6TGFiZWwxNTc2MDE5MjA5", + "url": "https://api.github.com/repos/hub4j/github-api/labels/dependencies", + "name": "dependencies", + "color": "0366d6", + "default": false, + "description": "Pull requests that update a dependency file" + }, + { + "id": 2156391660, + "node_id": "MDU6TGFiZWwyMTU2MzkxNjYw", + "url": "https://api.github.com/repos/hub4j/github-api/labels/github_actions", + "name": "github_actions", "color": "000000", "default": false, - "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." + "description": "Pull requests that update Github_actions code" } ], - "state": "open", + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 6, - "created_at": "2024-02-07T04:08:42Z", - "updated_at": "2024-07-01T19:15:15Z", - "closed_at": null, - "author_association": "NONE", + "comments": 1, + "created_at": "2025-10-01T02:01:07Z", + "updated_at": "2025-10-23T01:00:05Z", + "closed_at": "2025-10-23T00:59:57Z", + "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, - "draft": true, + "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/1787", - "html_url": "https://github.com/hub4j/github-api/pull/1787", - "diff_url": "https://github.com/hub4j/github-api/pull/1787.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/1787.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2147", + "html_url": "https://github.com/hub4j/github-api/pull/2147", + "diff_url": "https://github.com/hub4j/github-api/pull/2147.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2147.patch", + "merged_at": "2025-10-23T00:59:57Z" }, - "body": "# Description\r\n\r\nFollowing up on open comments from https://github.com/hub4j/github-api/pull/1142 and https://github.com/cortexapps/github-api/pull/8\r\n\r\nI don't currently have access to the security alerts for the example test repo (https://github.com/hub4j-test-org/Pixi), so the response fields might be slightly outdated until I (or someone else) can re-record the wiremock samples.\r\n\r\nStart of an (incomplete) implementation for https://github.com/hub4j/github-api/issues/1133 (will add more endpoints in a later PR)\r\n\r\nThis change adds the read-only calls for the following endpoints, as they were originally implemented in previous PRs:\r\n* [List code scanning alerts for a repository](https://docs.github.com/en/rest/code-scanning/code-scanning?apiVersion=2022-11-28#list-code-scanning-alerts-for-a-repository)\r\n* [Get a code scanning alert](https://docs.github.com/en/rest/code-scanning/code-scanning?apiVersion=2022-11-28#get-a-code-scanning-alert)\r\n\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [ ] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [ ] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [ ] Enable \"Allow edits from maintainers\".\r\n", + "body": "Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.0 to 5.5.1.\n
\nRelease notes\n

Sourced from codecov/codecov-action's releases.

\n
\n

v5.5.1

\n

What's Changed

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/codecov/codecov-action/compare/v5.5.0...v5.5.1

\n
\n
\n
\nChangelog\n

Sourced from codecov/codecov-action's changelog.

\n
\n

v5.5.1

\n

What's Changed

\n\n

Full Changelog: https://github.com/codecov/codecov-action/compare/v5.5.0..v5.5.1

\n
\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=codecov/codecov-action&package-manager=github_actions&previous-version=5.5.0&new-version=5.5.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nYou can trigger a rebase of this PR by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1787/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2147/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1149,77 +2474,67 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1787/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2147/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 }, { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1730", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2143", "repository_url": "https://api.github.com/repos/hub4j/github-api", - "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/labels{/name}", - "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/comments", - "events_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/events", - "html_url": "https://github.com/hub4j/github-api/pull/1730", - "id": 1952864832, - "node_id": "PR_kwDOAAlq-s5dTnjz", - "number": 1730, - "title": "Paginator", + "labels_url": "https://api.github.com/repos/hub4j/github-api/issues/2143/labels{/name}", + "comments_url": "https://api.github.com/repos/hub4j/github-api/issues/2143/comments", + "events_url": "https://api.github.com/repos/hub4j/github-api/issues/2143/events", + "html_url": "https://github.com/hub4j/github-api/pull/2143", + "id": 3387881462, + "node_id": "PR_kwDOAAlq-s6nEJSs", + "number": 2143, + "title": "feat: add force-cancel workflow run", "user": { - "login": "anujhydrabadi", - "id": 129152617, - "node_id": "U_kgDOB7K2aQ", - "avatar_url": "https://avatars.githubusercontent.com/u/129152617?v=4", + "login": "cyrilico", + "id": 19289022, + "node_id": "MDQ6VXNlcjE5Mjg5MDIy", + "avatar_url": "https://avatars.githubusercontent.com/u/19289022?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/anujhydrabadi", - "html_url": "https://github.com/anujhydrabadi", - "followers_url": "https://api.github.com/users/anujhydrabadi/followers", - "following_url": "https://api.github.com/users/anujhydrabadi/following{/other_user}", - "gists_url": "https://api.github.com/users/anujhydrabadi/gists{/gist_id}", - "starred_url": "https://api.github.com/users/anujhydrabadi/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/anujhydrabadi/subscriptions", - "organizations_url": "https://api.github.com/users/anujhydrabadi/orgs", - "repos_url": "https://api.github.com/users/anujhydrabadi/repos", - "events_url": "https://api.github.com/users/anujhydrabadi/events{/privacy}", - "received_events_url": "https://api.github.com/users/anujhydrabadi/received_events", + "url": "https://api.github.com/users/cyrilico", + "html_url": "https://github.com/cyrilico", + "followers_url": "https://api.github.com/users/cyrilico/followers", + "following_url": "https://api.github.com/users/cyrilico/following{/other_user}", + "gists_url": "https://api.github.com/users/cyrilico/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cyrilico/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cyrilico/subscriptions", + "organizations_url": "https://api.github.com/users/cyrilico/orgs", + "repos_url": "https://api.github.com/users/cyrilico/repos", + "events_url": "https://api.github.com/users/cyrilico/events{/privacy}", + "received_events_url": "https://api.github.com/users/cyrilico/received_events", "type": "User", "user_view_type": "public", "site_admin": false }, - "labels": [ - { - "id": 4789870627, - "node_id": "LA_kwDOAAlq-s8AAAABHX-gIw", - "url": "https://api.github.com/repos/hub4j/github-api/labels/work-abandoned", - "name": "work-abandoned", - "color": "000000", - "default": false, - "description": "There hasn't been any activity on the PR in a while. Another contributor might want to pick it up." - } - ], - "state": "open", + "labels": [], + "state": "closed", "locked": false, "assignee": null, "assignees": [], "milestone": null, - "comments": 3, - "created_at": "2023-10-19T18:48:14Z", - "updated_at": "2024-06-20T03:14:40Z", - "closed_at": null, + "comments": 1, + "created_at": "2025-09-05T15:06:56Z", + "updated_at": "2025-09-06T21:04:17Z", + "closed_at": "2025-09-06T19:47:04Z", "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, - "draft": true, + "draft": false, "pull_request": { - "url": "https://api.github.com/repos/hub4j/github-api/pulls/1730", - "html_url": "https://github.com/hub4j/github-api/pull/1730", - "diff_url": "https://github.com/hub4j/github-api/pull/1730.diff", - "patch_url": "https://github.com/hub4j/github-api/pull/1730.patch", - "merged_at": null + "url": "https://api.github.com/repos/hub4j/github-api/pulls/2143", + "html_url": "https://github.com/hub4j/github-api/pull/2143", + "diff_url": "https://github.com/hub4j/github-api/pull/2143.diff", + "patch_url": "https://github.com/hub4j/github-api/pull/2143.patch", + "merged_at": "2025-09-06T19:47:04Z" }, - "body": "# Description\r\n\r\n`paginator()` method in `PagedIterable` to support starting at a particular page, and next, previous, first, last and jumping to any particular page, along with a few other supporting methods. Made in parallel to `iterator()` method so as to keep backward compatibility, but supports all functionality that `iterator()` provides.\r\n\r\nFixes #348 \r\nFixes #1614 \r\nFixes #448 \r\nFixes #1197 \r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Add JavaDocs and other comments explaining the behavior. \r\n- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [ ] Run `mvn -D enable-ci clean install site` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", + "body": "# Description\r\n\r\nPretty similar to the existing `cancel` method, but the forced version provided by Github: https://docs.github.com/en/rest/actions/workflow-runs?apiVersion=2022-11-28#force-cancel-a-workflow-run\r\n\r\nWe've been using this library extensively and we have a valid use case for force-cancel. This way we don't have go navigate around the library just for this request.\r\n\r\n# Before submitting a PR:\r\n\r\n- [x] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Add JavaDocs and other comments explaining the behavior. \r\n- [x] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . \r\n- [x] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\r\n- [x] Run `mvn -D enable-ci clean install site \"-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED\"` locally. If this command doesn't succeed, your change will not pass CI.\r\n- [x] Push your changes to a branch other than `main`. You will create your PR from that branch.\r\n\r\n# When creating a PR: \r\n\r\n- [x] Fill in the \"Description\" above with clear summary of the changes. This includes:\r\n - [x] If this PR fixes one or more issues, include \"Fixes #\" lines for each issue. \r\n - [x] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.\r\n- [x] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, \"Reaching this particular exception is hard and is not a particular common scenario.\"\r\n- [x] Enable \"Allow edits from maintainers\".\r\n", "reactions": { - "url": "https://api.github.com/repos/hub4j/github-api/issues/1730/reactions", + "url": "https://api.github.com/repos/hub4j/github-api/issues/2143/reactions", "total_count": 0, "+1": 0, "-1": 0, @@ -1230,7 +2545,7 @@ "rocket": 0, "eyes": 0 }, - "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/1730/timeline", + "timeline_url": "https://api.github.com/repos/hub4j/github-api/issues/2143/timeline", "performed_via_github_app": null, "state_reason": null, "score": 1 diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/1-user.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/1-user.json index 5e6914f8ac..d5ecefd851 100644 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/1-user.json +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/1-user.json @@ -1,5 +1,5 @@ { - "id": "10a0d673-1b68-4b43-a693-0aa4af0ce268", + "id": "a17f3938-e65d-490c-9039-255407e5c1d8", "name": "user", "request": { "url": "/user", @@ -14,7 +14,7 @@ "status": 200, "bodyFileName": "1-user.json", "headers": { - "Date": "Sun, 25 Jan 2026 19:38:35 GMT", + "Date": "Tue, 10 Feb 2026 20:15:09 GMT", "Content-Type": "application/json; charset=utf-8", "Cache-Control": "private, max-age=60, s-maxage=60", "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", @@ -35,14 +35,14 @@ "Content-Security-Policy": "default-src 'none'", "Server": "github.com", "X-RateLimit-Limit": "5000", - "X-RateLimit-Remaining": "4970", - "X-RateLimit-Reset": "1769372833", - "X-RateLimit-Used": "30", + "X-RateLimit-Remaining": "4903", + "X-RateLimit-Reset": "1770755531", + "X-RateLimit-Used": "97", "X-RateLimit-Resource": "core", - "X-GitHub-Request-Id": "F729:24E46A:660091E:5785FC3:6976713B" + "X-GitHub-Request-Id": "FC9A:50C44:9D92423:92184CD:698B91CD" } }, - "uuid": "10a0d673-1b68-4b43-a693-0aa4af0ce268", + "uuid": "a17f3938-e65d-490c-9039-255407e5c1d8", "persistent": true, "insertionIndex": 1 } \ No newline at end of file diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/2-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/2-search_issues.json index a1a95a6c55..b683ec231d 100644 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/2-search_issues.json +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/2-search_issues.json @@ -1,8 +1,8 @@ { - "id": "ec183035-31a6-476e-b33b-99fbc7df7a18", + "id": "29a7effd-f202-484d-852a-cdcaac4a38b6", "name": "search_issues", "request": { - "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Apr+is%3Aopen", + "url": "/search/issues?sort=created&q=repo%3Ahub4j%2Fgithub-api+is%3Apr+is%3Aclosed", "method": "GET", "headers": { "Accept": { @@ -14,7 +14,7 @@ "status": 200, "bodyFileName": "2-search_issues.json", "headers": { - "Date": "Sun, 25 Jan 2026 19:38:36 GMT", + "Date": "Tue, 10 Feb 2026 20:15:10 GMT", "Content-Type": "application/json; charset=utf-8", "Cache-Control": "no-cache", "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", @@ -24,9 +24,9 @@ "X-GitHub-Media-Type": "github.v3; format=json", "x-github-api-version-selected": "2022-11-28", "X-RateLimit-Limit": "30", - "X-RateLimit-Remaining": "29", - "X-RateLimit-Reset": "1769369976", - "X-RateLimit-Used": "1", + "X-RateLimit-Remaining": "25", + "X-RateLimit-Reset": "1770754529", + "X-RateLimit-Used": "5", "X-RateLimit-Resource": "search", "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", "Access-Control-Allow-Origin": "*", @@ -37,10 +37,11 @@ "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", "Content-Security-Policy": "default-src 'none'", "Server": "github.com", - "X-GitHub-Request-Id": "F72B:121DD1:616A142:52B0E01:6976713B" + "X-GitHub-Request-Id": "FC9D:312B30:9B9970D:900825A:698B91CE", + "Link": "; rel=\"next\", ; rel=\"last\"" } }, - "uuid": "ec183035-31a6-476e-b33b-99fbc7df7a18", + "uuid": "29a7effd-f202-484d-852a-cdcaac4a38b6", "persistent": true, "scenarioName": "scenario-1-search-issues", "requiredScenarioState": "Started", diff --git a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/3-search_issues.json b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/3-search_issues.json index d7e7f00bf6..9c88f073b6 100644 --- a/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/3-search_issues.json +++ b/src/test/resources/org/kohsuke/github/AppTest/wiremock/testIssueSearchPullRequestsOnly/mappings/3-search_issues.json @@ -1,8 +1,8 @@ { - "id": "237fcf1d-1d48-4f46-8ea8-4a6db6c14953", + "id": "79607d8c-24ba-464b-a958-aae8c88d16bd", "name": "search_issues", "request": { - "url": "/search/issues?sort=updated&q=repo%3Ahub4j%2Fgithub-api+is%3Apr+is%3Aopen", + "url": "/search/issues?sort=created&q=repo%3Ahub4j%2Fgithub-api+is%3Apr+is%3Aclosed", "method": "GET", "headers": { "Accept": { @@ -14,7 +14,7 @@ "status": 200, "bodyFileName": "3-search_issues.json", "headers": { - "Date": "Sun, 25 Jan 2026 19:38:37 GMT", + "Date": "Tue, 10 Feb 2026 20:15:11 GMT", "Content-Type": "application/json; charset=utf-8", "Cache-Control": "no-cache", "Vary": "Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With", @@ -24,9 +24,9 @@ "X-GitHub-Media-Type": "github.v3; format=json", "x-github-api-version-selected": "2022-11-28", "X-RateLimit-Limit": "30", - "X-RateLimit-Remaining": "28", - "X-RateLimit-Reset": "1769369976", - "X-RateLimit-Used": "2", + "X-RateLimit-Remaining": "24", + "X-RateLimit-Reset": "1770754529", + "X-RateLimit-Used": "6", "X-RateLimit-Resource": "search", "Access-Control-Expose-Headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset", "Access-Control-Allow-Origin": "*", @@ -37,10 +37,11 @@ "Referrer-Policy": "origin-when-cross-origin, strict-origin-when-cross-origin", "Content-Security-Policy": "default-src 'none'", "Server": "github.com", - "X-GitHub-Request-Id": "F72C:202497:650445E:56326B6:6976713C" + "X-GitHub-Request-Id": "FC9E:366D7C:9C761D0:90EB6B2:698B91CF", + "Link": "; rel=\"next\", ; rel=\"last\"" } }, - "uuid": "237fcf1d-1d48-4f46-8ea8-4a6db6c14953", + "uuid": "79607d8c-24ba-464b-a958-aae8c88d16bd", "persistent": true, "scenarioName": "scenario-1-search-issues", "requiredScenarioState": "scenario-1-search-issues-2",