diff --git a/src/main/java/org/kohsuke/github/GHEventPayload.java b/src/main/java/org/kohsuke/github/GHEventPayload.java
index 12a95e0979..8d39859857 100644
--- a/src/main/java/org/kohsuke/github/GHEventPayload.java
+++ b/src/main/java/org/kohsuke/github/GHEventPayload.java
@@ -529,7 +529,7 @@ public GHRepository getForkee() {
// ContentReferenceEvent
// DeployKeyEvent DownloadEvent FollowEvent ForkApplyEvent GitHubAppAuthorizationEvent GistEvent GollumEvent
// InstallationEvent InstallationRepositoriesEvent IssuesEvent LabelEvent MarketplacePurchaseEvent MemberEvent
- // MembershipEvent MetaEvent MilestoneEvent OrganizationEvent OrgBlockEvent PackageEvent PageBuildEvent
+ // MembershipEvent MetaEvent OrganizationEvent OrgBlockEvent PackageEvent PageBuildEvent
// ProjectCardEvent ProjectColumnEvent ProjectEvent RepositoryDispatchEvent RepositoryImportEvent
// RepositoryVulnerabilityAlertEvent SecurityAdvisoryEvent StarEvent StatusEvent TeamEvent TeamAddEvent WatchEvent
@@ -1005,6 +1005,41 @@ void lateBind() {
}
}
+ /**
+ * A milestone event has been triggered.
+ *
+ * @see milestone event
+ */
+ public static class Milestone extends GHEventPayload {
+
+ private GHMilestone milestone;
+
+ /**
+ * Create default Milestone instance
+ */
+ public Milestone() {
+ }
+
+ /**
+ * Gets the milestone.
+ *
+ * @return the milestone
+ */
+ @SuppressFBWarnings(value = { "EI_EXPOSE_REP" }, justification = "Expected behavior")
+ public GHMilestone getMilestone() {
+ return milestone;
+ }
+
+ @Override
+ void lateBind() {
+ super.lateBind();
+ GHRepository repository = getRepository();
+ if (repository != null && milestone != null) {
+ milestone.lateBind(repository);
+ }
+ }
+ }
+
/**
* A ping.
*
diff --git a/src/main/java/org/kohsuke/github/GHMilestoneQueryBuilder.java b/src/main/java/org/kohsuke/github/GHMilestoneQueryBuilder.java
new file mode 100644
index 0000000000..ee47d5fa96
--- /dev/null
+++ b/src/main/java/org/kohsuke/github/GHMilestoneQueryBuilder.java
@@ -0,0 +1,79 @@
+package org.kohsuke.github;
+
+/**
+ * Lists up milestones with filtering and sorting.
+ *
+ * @see GHRepository#queryMilestones() GHRepository#queryMilestones()
+ */
+public class GHMilestoneQueryBuilder extends GHQueryBuilder {
+ /**
+ * The enum Sort.
+ */
+ public enum Sort {
+
+ /** Sort by completeness (percentage of issues closed). */
+ COMPLETENESS,
+ /** Sort by due date. */
+ DUE_ON
+ }
+
+ private final GHRepository repo;
+
+ /**
+ * Instantiates a new GH milestone query builder.
+ *
+ * @param repo
+ * the repo
+ */
+ GHMilestoneQueryBuilder(GHRepository repo) {
+ super(repo.root());
+ this.repo = repo;
+ }
+
+ /**
+ * Direction gh milestone query builder.
+ *
+ * @param d
+ * the d
+ * @return the gh milestone query builder
+ */
+ public GHMilestoneQueryBuilder direction(GHDirection d) {
+ req.with("direction", d);
+ return this;
+ }
+
+ /**
+ * List.
+ *
+ * @return the paged iterable
+ */
+ @Override
+ public PagedIterable list() {
+ return req.withUrlPath(repo.getApiTailUrl("milestones"))
+ .toIterable(GHMilestone[].class, item -> item.lateBind(repo));
+ }
+
+ /**
+ * Sort gh milestone query builder.
+ *
+ * @param sort
+ * the sort
+ * @return the gh milestone query builder
+ */
+ public GHMilestoneQueryBuilder sort(Sort sort) {
+ req.with("sort", sort);
+ return this;
+ }
+
+ /**
+ * State gh milestone query builder.
+ *
+ * @param state
+ * the state
+ * @return the gh milestone query builder
+ */
+ public GHMilestoneQueryBuilder state(GHIssueState state) {
+ req.with("state", state);
+ return this;
+ }
+}
diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java
index 757ee8cdcb..b03b25699a 100644
--- a/src/main/java/org/kohsuke/github/GHRepository.java
+++ b/src/main/java/org/kohsuke/github/GHRepository.java
@@ -3007,6 +3007,15 @@ public GHIssueQueryBuilder.ForRepository queryIssues() {
return new GHIssueQueryBuilder.ForRepository(this);
}
+ /**
+ * Retrieves milestones.
+ *
+ * @return the gh milestone query builder
+ */
+ public GHMilestoneQueryBuilder queryMilestones() {
+ return new GHMilestoneQueryBuilder(this);
+ }
+
/**
* Retrieves pull requests.
*
diff --git a/src/main/resources/META-INF/native-image/org.kohsuke/github-api/reflect-config.json b/src/main/resources/META-INF/native-image/org.kohsuke/github-api/reflect-config.json
index 52af02a2a4..bb5b85772f 100644
--- a/src/main/resources/META-INF/native-image/org.kohsuke/github-api/reflect-config.json
+++ b/src/main/resources/META-INF/native-image/org.kohsuke/github-api/reflect-config.json
@@ -2564,6 +2564,21 @@
"allPublicClasses": true,
"allDeclaredClasses": true
},
+ {
+ "name": "org.kohsuke.github.GHEventPayload$Milestone",
+ "allPublicFields": true,
+ "allDeclaredFields": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredConstructors": true,
+ "queryAllPublicMethods": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredMethods": true,
+ "allPublicClasses": true,
+ "allDeclaredClasses": true
+ },
{
"name": "org.kohsuke.github.GHEventPayload$Ping",
"allPublicFields": true,
@@ -3719,6 +3734,36 @@
"allPublicClasses": true,
"allDeclaredClasses": true
},
+ {
+ "name": "org.kohsuke.github.GHMilestoneQueryBuilder",
+ "allPublicFields": true,
+ "allDeclaredFields": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredConstructors": true,
+ "queryAllPublicMethods": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredMethods": true,
+ "allPublicClasses": true,
+ "allDeclaredClasses": true
+ },
+ {
+ "name": "org.kohsuke.github.GHMilestoneQueryBuilder$Sort",
+ "allPublicFields": true,
+ "allDeclaredFields": true,
+ "queryAllPublicConstructors": true,
+ "queryAllDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredConstructors": true,
+ "queryAllPublicMethods": true,
+ "queryAllDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredMethods": true,
+ "allPublicClasses": true,
+ "allDeclaredClasses": true
+ },
{
"name": "org.kohsuke.github.GHMilestoneState",
"allPublicFields": true,
diff --git a/src/test/java/org/kohsuke/github/GHEventPayloadTest.java b/src/test/java/org/kohsuke/github/GHEventPayloadTest.java
index aa0186075e..8d8b5af056 100644
--- a/src/test/java/org/kohsuke/github/GHEventPayloadTest.java
+++ b/src/test/java/org/kohsuke/github/GHEventPayloadTest.java
@@ -491,10 +491,6 @@ public void discussion_created() throws Exception {
// @Test
// public void membership() throws Exception {}
- // TODO implement support classes and write test
- // @Test
- // public void milestone() throws Exception {}
-
// TODO implement support classes and write test
// @Test
// public void page_build() throws Exception {}
@@ -901,6 +897,38 @@ public void membership_added() throws Exception {
assertThat(team.getOrganization().getLogin(), is("gsmet-bot-playground"));
}
+ /**
+ * Milestone closed.
+ *
+ * @throws Exception
+ * the exception
+ */
+ @Test
+ @Payload("milestone")
+ public void milestone() throws Exception {
+ final GHEventPayload.Milestone event = GitHub.offline()
+ .parseEventPayload(payload.asReader(), GHEventPayload.Milestone.class);
+ assertThat(event.getAction(), is("closed"));
+
+ final GHMilestone milestone = event.getMilestone();
+ assertThat(milestone.getId(), is(16523020L));
+ assertThat(milestone.getNumber(), is(2));
+ assertThat(milestone.getTitle(), is("Test milestone"));
+ assertThat(milestone.getDescription(), is(""));
+ assertThat(milestone.getState(), is(GHMilestoneState.CLOSED));
+ assertThat(milestone.getOpenIssues(), is(0));
+ assertThat(milestone.getClosedIssues(), is(0));
+ assertThat(milestone.getCreatedAt().toEpochMilli(), is(1782373293000L));
+ assertThat(milestone.getUpdatedAt().toEpochMilli(), is(1782373452000L));
+ assertThat(milestone.getClosedAt().toEpochMilli(), is(1782373452000L));
+ assertThat(milestone.getDueOn().toEpochMilli(), is(1782432000000L));
+ assertThat(milestone.getCreator().getLogin(), is("gsmet"));
+
+ assertThat(event.getSender().getLogin(), is("gsmet"));
+ assertThat(event.getRepository().getFullName(), is("gsmet/quarkus-bot-java-playground"));
+ assertThat(event.getInstallation().getId(), is(90470530L));
+ }
+
/**
* Ping.
*
diff --git a/src/test/java/org/kohsuke/github/GHMilestoneTest.java b/src/test/java/org/kohsuke/github/GHMilestoneTest.java
index b7e6994d3e..e6a8fdc980 100644
--- a/src/test/java/org/kohsuke/github/GHMilestoneTest.java
+++ b/src/test/java/org/kohsuke/github/GHMilestoneTest.java
@@ -7,6 +7,8 @@
import java.io.IOException;
import java.time.Instant;
import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
import static org.hamcrest.Matchers.*;
@@ -18,6 +20,13 @@
*/
public class GHMilestoneTest extends AbstractGitHubWireMockTest {
+ private static List filterTestMilestones(List milestones) {
+ return milestones.stream()
+ .map(GHMilestone::getTitle)
+ .filter(t -> t.startsWith("Milestone Sort "))
+ .collect(Collectors.toList());
+ }
+
/**
* Create default GHMilestoneTest instance
*/
@@ -38,14 +47,84 @@ public void cleanUp() throws Exception {
return;
}
- for (GHMilestone milestone : getRepository(getNonRecordingGitHub()).listMilestones(GHIssueState.ALL)) {
+ GHRepository repo = getRepository(getNonRecordingGitHub());
+
+ for (GHIssue issue : repo.queryIssues().state(GHIssueState.ALL).list()) {
+ if (issue.getTitle().endsWith("for sort test") || issue.getTitle().equals("Issue for testUnsetMilestone")) {
+ issue.close();
+ }
+ }
+
+ for (GHMilestone milestone : repo.listMilestones(GHIssueState.ALL)) {
if ("Original Title".equals(milestone.getTitle()) || "Updated Title".equals(milestone.getTitle())
- || "Unset Test Milestone".equals(milestone.getTitle())) {
+ || "Unset Test Milestone".equals(milestone.getTitle())
+ || "Milestone Sort A".equals(milestone.getTitle())
+ || "Milestone Sort B".equals(milestone.getTitle())) {
milestone.delete();
}
}
}
+ /**
+ * Test list milestones with sort and direction.
+ *
+ * @throws IOException
+ * Signals that an I/O exception has occurred.
+ */
+ @Test
+ public void testListMilestonesWithSort() throws IOException {
+ GHRepository repo = getRepository();
+ GHMilestone milestoneA = repo.createMilestone("Milestone Sort A", "First milestone");
+ milestoneA.setDueOn(GitHubClient.parseInstant("2025-06-01T00:00:00Z"));
+ GHMilestone milestoneB = repo.createMilestone("Milestone Sort B", "Second milestone");
+ milestoneB.setDueOn(GitHubClient.parseInstant("2025-12-01T00:00:00Z"));
+
+ // List with due_on sort ascending (default)
+ List ascending = filterTestMilestones(repo.queryMilestones()
+ .state(GHIssueState.OPEN)
+ .sort(GHMilestoneQueryBuilder.Sort.DUE_ON)
+ .direction(GHDirection.ASC)
+ .list()
+ .toList());
+ assertThat(ascending, contains("Milestone Sort A", "Milestone Sort B"));
+
+ // List with due_on sort descending
+ List descending = filterTestMilestones(repo.queryMilestones()
+ .state(GHIssueState.OPEN)
+ .sort(GHMilestoneQueryBuilder.Sort.DUE_ON)
+ .direction(GHDirection.DESC)
+ .list()
+ .toList());
+ assertThat(descending, contains("Milestone Sort B", "Milestone Sort A"));
+
+ // Create issues to test completeness sort
+ // Milestone A: 1 open, 1 closed = 50% complete
+ GHIssue issueA1 = repo.createIssue("Issue A1 for sort test").milestone(milestoneA).create();
+ GHIssue issueA2 = repo.createIssue("Issue A2 for sort test").milestone(milestoneA).create();
+ issueA2.close();
+
+ // Milestone B: 1 open, 0 closed = 0% complete
+ GHIssue issueB1 = repo.createIssue("Issue B1 for sort test").milestone(milestoneB).create();
+
+ // List with completeness sort ascending (least complete first)
+ List byCompleteness = filterTestMilestones(repo.queryMilestones()
+ .state(GHIssueState.OPEN)
+ .sort(GHMilestoneQueryBuilder.Sort.COMPLETENESS)
+ .direction(GHDirection.ASC)
+ .list()
+ .toList());
+ assertThat(byCompleteness, contains("Milestone Sort B", "Milestone Sort A"));
+
+ // List with completeness sort descending (most complete first)
+ List byCompletenessDesc = filterTestMilestones(repo.queryMilestones()
+ .state(GHIssueState.OPEN)
+ .sort(GHMilestoneQueryBuilder.Sort.COMPLETENESS)
+ .direction(GHDirection.DESC)
+ .list()
+ .toList());
+ assertThat(byCompletenessDesc, contains("Milestone Sort A", "Milestone Sort B"));
+ }
+
/**
* Test unset milestone.
*
diff --git a/src/test/resources/org/kohsuke/github/GHEventPayloadTest/milestone.json b/src/test/resources/org/kohsuke/github/GHEventPayloadTest/milestone.json
index be5c08faaa..b151b94417 100644
--- a/src/test/resources/org/kohsuke/github/GHEventPayloadTest/milestone.json
+++ b/src/test/resources/org/kohsuke/github/GHEventPayloadTest/milestone.json
@@ -1,158 +1,169 @@
{
- "action": "created",
- "milestone": {
- "url": "https://api.github.com/repos/baxterandthehackers/public-repo/milestones/3",
- "html_url": "https://github.com/baxterandthehackers/public-repo/milestones/Test%20milestone%20creation%20webhook%20from%20command%20line2",
- "labels_url": "https://api.github.com/repos/baxterandthehackers/public-repo/milestones/3/labels",
- "id": 2055681,
- "number": 3,
- "title": "I am a milestone",
- "description": null,
- "creator": {
- "login": "baxterthehacker",
- "id": 7649605,
- "avatar_url": "https://avatars.githubusercontent.com/u/7649605?v=3",
- "gravatar_id": "",
- "url": "https://api.github.com/users/baxterthehacker",
- "html_url": "https://github.com/baxterthehacker",
- "followers_url": "https://api.github.com/users/baxterthehacker/followers",
- "following_url": "https://api.github.com/users/baxterthehacker/following{/other_user}",
- "gists_url": "https://api.github.com/users/baxterthehacker/gists{/gist_id}",
- "starred_url": "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}",
- "subscriptions_url": "https://api.github.com/users/baxterthehacker/subscriptions",
- "organizations_url": "https://api.github.com/users/baxterthehacker/orgs",
- "repos_url": "https://api.github.com/users/baxterthehacker/repos",
- "events_url": "https://api.github.com/users/baxterthehacker/events{/privacy}",
- "received_events_url": "https://api.github.com/users/baxterthehacker/received_events",
- "type": "User",
- "site_admin": true
+ "action": "closed",
+ "milestone": {
+ "url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/milestones/2",
+ "html_url": "https://github.com/gsmet/quarkus-bot-java-playground/milestone/2",
+ "labels_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/milestones/2/labels",
+ "id": 16523020,
+ "node_id": "MI_kwDOEq3cwc4A_B8M",
+ "number": 2,
+ "title": "Test milestone",
+ "description": "",
+ "creator": {
+ "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
+ },
+ "open_issues": 0,
+ "closed_issues": 0,
+ "state": "closed",
+ "created_at": "2026-06-25T07:41:33Z",
+ "updated_at": "2026-06-25T07:44:12Z",
+ "due_on": "2026-06-26T00:00:00Z",
+ "closed_at": "2026-06-25T07:44:12Z"
},
- "open_issues": 0,
- "closed_issues": 0,
- "state": "open",
- "created_at": "2016-10-07T19:26:08Z",
- "updated_at": "2016-10-07T19:26:08Z",
- "due_on": null,
- "closed_at": null
- },
- "repository": {
- "id": 70275481,
- "name": "public-repo",
- "full_name": "baxterandthehackers/public-repo",
- "owner": {
- "login": "baxterandthehackers",
- "id": 4312013,
- "avatar_url": "https://avatars.githubusercontent.com/u/4312013?v=3",
- "gravatar_id": "",
- "url": "https://api.github.com/users/baxterandthehackers",
- "html_url": "https://github.com/baxterandthehackers",
- "followers_url": "https://api.github.com/users/baxterandthehackers/followers",
- "following_url": "https://api.github.com/users/baxterandthehackers/following{/other_user}",
- "gists_url": "https://api.github.com/users/baxterandthehackers/gists{/gist_id}",
- "starred_url": "https://api.github.com/users/baxterandthehackers/starred{/owner}{/repo}",
- "subscriptions_url": "https://api.github.com/users/baxterandthehackers/subscriptions",
- "organizations_url": "https://api.github.com/users/baxterandthehackers/orgs",
- "repos_url": "https://api.github.com/users/baxterandthehackers/repos",
- "events_url": "https://api.github.com/users/baxterandthehackers/events{/privacy}",
- "received_events_url": "https://api.github.com/users/baxterandthehackers/received_events",
- "type": "Organization",
- "site_admin": false
+ "repository": {
+ "id": 313384129,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTMzODQxMjk=",
+ "name": "quarkus-bot-java-playground",
+ "full_name": "gsmet/quarkus-bot-java-playground",
+ "private": false,
+ "owner": {
+ "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
+ },
+ "html_url": "https://github.com/gsmet/quarkus-bot-java-playground",
+ "description": null,
+ "fork": false,
+ "url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground",
+ "forks_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/forks",
+ "keys_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/teams",
+ "hooks_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/hooks",
+ "issue_events_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/events",
+ "assignees_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/tags",
+ "blobs_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/languages",
+ "stargazers_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/stargazers",
+ "contributors_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/contributors",
+ "subscribers_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/subscribers",
+ "subscription_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/subscription",
+ "commits_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/merges",
+ "archive_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/downloads",
+ "issues_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/labels{/name}",
+ "releases_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/gsmet/quarkus-bot-java-playground/deployments",
+ "created_at": "2020-11-16T17:55:53Z",
+ "updated_at": "2025-06-30T14:16:50Z",
+ "pushed_at": "2025-06-30T14:16:46Z",
+ "git_url": "git://github.com/gsmet/quarkus-bot-java-playground.git",
+ "ssh_url": "git@github.com:gsmet/quarkus-bot-java-playground.git",
+ "clone_url": "https://github.com/gsmet/quarkus-bot-java-playground.git",
+ "svn_url": "https://github.com/gsmet/quarkus-bot-java-playground",
+ "homepage": null,
+ "size": 170,
+ "stargazers_count": 1,
+ "watchers_count": 1,
+ "language": "Java",
+ "has_issues": true,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": true,
+ "has_pages": false,
+ "has_discussions": true,
+ "forks_count": 2,
+ "mirror_url": null,
+ "archived": false,
+ "disabled": false,
+ "open_issues_count": 61,
+ "license": null,
+ "allow_forking": true,
+ "is_template": false,
+ "web_commit_signoff_required": false,
+ "has_pull_requests": true,
+ "pull_request_creation_policy": "all",
+ "topics": [],
+ "visibility": "public",
+ "forks": 2,
+ "open_issues": 61,
+ "watchers": 1,
+ "default_branch": "main"
},
- "private": true,
- "html_url": "https://github.com/baxterandthehackers/public-repo",
- "description": null,
- "fork": false,
- "url": "https://api.github.com/repos/baxterandthehackers/public-repo",
- "forks_url": "https://api.github.com/repos/baxterandthehackers/public-repo/forks",
- "keys_url": "https://api.github.com/repos/baxterandthehackers/public-repo/keys{/key_id}",
- "collaborators_url": "https://api.github.com/repos/baxterandthehackers/public-repo/collaborators{/collaborator}",
- "teams_url": "https://api.github.com/repos/baxterandthehackers/public-repo/teams",
- "hooks_url": "https://api.github.com/repos/baxterandthehackers/public-repo/hooks",
- "issue_events_url": "https://api.github.com/repos/baxterandthehackers/public-repo/issues/events{/number}",
- "events_url": "https://api.github.com/repos/baxterandthehackers/public-repo/events",
- "assignees_url": "https://api.github.com/repos/baxterandthehackers/public-repo/assignees{/user}",
- "branches_url": "https://api.github.com/repos/baxterandthehackers/public-repo/branches{/branch}",
- "tags_url": "https://api.github.com/repos/baxterandthehackers/public-repo/tags",
- "blobs_url": "https://api.github.com/repos/baxterandthehackers/public-repo/git/blobs{/sha}",
- "git_tags_url": "https://api.github.com/repos/baxterandthehackers/public-repo/git/tags{/sha}",
- "git_refs_url": "https://api.github.com/repos/baxterandthehackers/public-repo/git/refs{/sha}",
- "trees_url": "https://api.github.com/repos/baxterandthehackers/public-repo/git/trees{/sha}",
- "statuses_url": "https://api.github.com/repos/baxterandthehackers/public-repo/statuses/{sha}",
- "languages_url": "https://api.github.com/repos/baxterandthehackers/public-repo/languages",
- "stargazers_url": "https://api.github.com/repos/baxterandthehackers/public-repo/stargazers",
- "contributors_url": "https://api.github.com/repos/baxterandthehackers/public-repo/contributors",
- "subscribers_url": "https://api.github.com/repos/baxterandthehackers/public-repo/subscribers",
- "subscription_url": "https://api.github.com/repos/baxterandthehackers/public-repo/subscription",
- "commits_url": "https://api.github.com/repos/baxterandthehackers/public-repo/commits{/sha}",
- "git_commits_url": "https://api.github.com/repos/baxterandthehackers/public-repo/git/commits{/sha}",
- "comments_url": "https://api.github.com/repos/baxterandthehackers/public-repo/comments{/number}",
- "issue_comment_url": "https://api.github.com/repos/baxterandthehackers/public-repo/issues/comments{/number}",
- "contents_url": "https://api.github.com/repos/baxterandthehackers/public-repo/contents/{+path}",
- "compare_url": "https://api.github.com/repos/baxterandthehackers/public-repo/compare/{base}...{head}",
- "merges_url": "https://api.github.com/repos/baxterandthehackers/public-repo/merges",
- "archive_url": "https://api.github.com/repos/baxterandthehackers/public-repo/{archive_format}{/ref}",
- "downloads_url": "https://api.github.com/repos/baxterandthehackers/public-repo/downloads",
- "issues_url": "https://api.github.com/repos/baxterandthehackers/public-repo/issues{/number}",
- "pulls_url": "https://api.github.com/repos/baxterandthehackers/public-repo/pulls{/number}",
- "milestones_url": "https://api.github.com/repos/baxterandthehackers/public-repo/milestones{/number}",
- "notifications_url": "https://api.github.com/repos/baxterandthehackers/public-repo/notifications{?since,all,participating}",
- "labels_url": "https://api.github.com/repos/baxterandthehackers/public-repo/labels{/name}",
- "releases_url": "https://api.github.com/repos/baxterandthehackers/public-repo/releases{/id}",
- "deployments_url": "https://api.github.com/repos/baxterandthehackers/public-repo/deployments",
- "created_at": "2016-10-07T19:10:12Z",
- "updated_at": "2016-10-07T19:10:12Z",
- "pushed_at": "2016-10-07T19:10:13Z",
- "git_url": "git://github.com/baxterandthehackers/public-repo.git",
- "ssh_url": "git@github.com:baxterandthehackers/public-repo.git",
- "clone_url": "https://github.com/baxterandthehackers/public-repo.git",
- "svn_url": "https://github.com/baxterandthehackers/public-repo",
- "homepage": null,
- "size": 0,
- "stargazers_count": 0,
- "watchers_count": 0,
- "language": null,
- "has_issues": true,
- "has_downloads": true,
- "has_wiki": true,
- "has_pages": false,
- "forks_count": 0,
- "mirror_url": null,
- "open_issues_count": 0,
- "forks": 0,
- "open_issues": 0,
- "watchers": 0,
- "default_branch": "main"
- },
- "organization": {
- "login": "baxterandthehackers",
- "id": 4312013,
- "url": "https://api.github.com/orgs/baxterandthehackers",
- "repos_url": "https://api.github.com/orgs/baxterandthehackers/repos",
- "events_url": "https://api.github.com/orgs/baxterandthehackers/events",
- "hooks_url": "https://api.github.com/orgs/baxterandthehackers/hooks",
- "issues_url": "https://api.github.com/orgs/baxterandthehackers/issues",
- "members_url": "https://api.github.com/orgs/baxterandthehackers/members{/member}",
- "public_members_url": "https://api.github.com/orgs/baxterandthehackers/public_members{/member}",
- "avatar_url": "https://avatars.githubusercontent.com/u/4312013?v=3",
- "description": ""
- },
- "sender": {
- "login": "baxterthehacker",
- "id": 7649605,
- "avatar_url": "https://avatars.githubusercontent.com/u/7649605?v=3",
- "gravatar_id": "",
- "url": "https://api.github.com/users/baxterthehacker",
- "html_url": "https://github.com/baxterthehacker",
- "followers_url": "https://api.github.com/users/baxterthehacker/followers",
- "following_url": "https://api.github.com/users/baxterthehacker/following{/other_user}",
- "gists_url": "https://api.github.com/users/baxterthehacker/gists{/gist_id}",
- "starred_url": "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}",
- "subscriptions_url": "https://api.github.com/users/baxterthehacker/subscriptions",
- "organizations_url": "https://api.github.com/users/baxterthehacker/orgs",
- "repos_url": "https://api.github.com/users/baxterthehacker/repos",
- "events_url": "https://api.github.com/users/baxterthehacker/events{/privacy}",
- "received_events_url": "https://api.github.com/users/baxterthehacker/received_events",
- "type": "User",
- "site_admin": true
- }
-}
\ No newline at end of file
+ "sender": {
+ "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
+ },
+ "installation": {
+ "id": 90470530,
+ "node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uOTA0NzA1MzA="
+ }
+}
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/1-orgs_hub4j-test-org.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/1-orgs_hub4j-test-org.json
new file mode 100644
index 0000000000..8f69d1f03d
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/1-orgs_hub4j-test-org.json
@@ -0,0 +1,76 @@
+{
+ "login": "hub4j-test-org",
+ "id": 7544739,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjc1NDQ3Mzk=",
+ "url": "https://api.github.com/orgs/hub4j-test-org",
+ "repos_url": "https://api.github.com/orgs/hub4j-test-org/repos",
+ "events_url": "https://api.github.com/orgs/hub4j-test-org/events",
+ "hooks_url": "https://api.github.com/orgs/hub4j-test-org/hooks",
+ "issues_url": "https://api.github.com/orgs/hub4j-test-org/issues",
+ "members_url": "https://api.github.com/orgs/hub4j-test-org/members{/member}",
+ "public_members_url": "https://api.github.com/orgs/hub4j-test-org/public_members{/member}",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7544739?v=4",
+ "description": "Hub4j Test Org Description (this could be null or blank too)",
+ "name": "Hub4j Test Org Name (this could be null or blank too)",
+ "company": null,
+ "blog": "https://hub4j.url.io/could/be/null",
+ "location": "Hub4j Test Org Location (this could be null or blank too)",
+ "email": "hub4jtestorgemail@could.be.null.com",
+ "twitter_username": null,
+ "is_verified": false,
+ "has_organization_projects": true,
+ "has_repository_projects": true,
+ "public_repos": 27,
+ "public_gists": 0,
+ "followers": 2,
+ "following": 0,
+ "html_url": "https://github.com/hub4j-test-org",
+ "created_at": "2014-05-10T19:39:11Z",
+ "updated_at": "2025-08-05T00:53:03Z",
+ "archived_at": null,
+ "type": "Organization",
+ "total_private_repos": 8,
+ "owned_private_repos": 8,
+ "private_gists": 0,
+ "disk_usage": 12076,
+ "collaborators": 1,
+ "billing_email": "kk@kohsuke.org",
+ "default_repository_permission": "none",
+ "members_can_create_repositories": false,
+ "two_factor_requirement_enabled": false,
+ "members_allowed_repository_creation_type": "none",
+ "members_can_create_public_repositories": false,
+ "members_can_create_private_repositories": false,
+ "members_can_create_internal_repositories": false,
+ "members_can_create_pages": true,
+ "members_can_fork_private_repositories": false,
+ "web_commit_signoff_required": false,
+ "deploy_keys_enabled_for_repositories": true,
+ "members_can_delete_repositories": true,
+ "members_can_change_repo_visibility": true,
+ "members_can_invite_outside_collaborators": true,
+ "members_can_delete_issues": false,
+ "display_commenter_full_name_setting_enabled": false,
+ "readers_can_create_discussions": true,
+ "members_can_create_teams": true,
+ "members_can_view_dependency_insights": true,
+ "default_repository_branch": "main",
+ "members_can_create_public_pages": true,
+ "members_can_create_private_pages": true,
+ "plan": {
+ "name": "free",
+ "space": 976562499,
+ "private_repos": 10000,
+ "filled_seats": 53,
+ "seats": 3
+ },
+ "advanced_security_enabled_for_new_repositories": false,
+ "dependabot_alerts_enabled_for_new_repositories": false,
+ "dependabot_security_updates_enabled_for_new_repositories": false,
+ "dependency_graph_enabled_for_new_repositories": false,
+ "secret_scanning_enabled_for_new_repositories": false,
+ "secret_scanning_push_protection_enabled_for_new_repositories": false,
+ "secret_scanning_push_protection_custom_link_enabled": false,
+ "secret_scanning_push_protection_custom_link": null,
+ "secret_scanning_validity_checks_enabled": false
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/10-r_h_g_issues.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/10-r_h_g_issues.json
new file mode 100644
index 0000000000..5b8b43ef52
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/10-r_h_g_issues.json
@@ -0,0 +1,113 @@
+{
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/489",
+ "repository_url": "https://api.github.com/repos/hub4j-test-org/github-api",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/489/labels{/name}",
+ "comments_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/489/comments",
+ "events_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/489/events",
+ "html_url": "https://github.com/hub4j-test-org/github-api/issues/489",
+ "id": 4741897077,
+ "node_id": "I_kwDODFTdCc8AAAABGqObdQ",
+ "number": 489,
+ "title": "Issue A2 for sort test",
+ "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": [],
+ "state": "open",
+ "locked": false,
+ "assignees": [],
+ "milestone": {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/7",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7/labels",
+ "id": 16523772,
+ "node_id": "MI_kwDODFTdCc4A_CH8",
+ "number": 7,
+ "title": "Milestone Sort A",
+ "description": "First milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 2,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:06Z",
+ "updated_at": "2026-06-25T07:59:10Z",
+ "due_on": "2025-06-01T00:00:00Z",
+ "closed_at": null
+ },
+ "comments": 0,
+ "created_at": "2026-06-25T07:59:09Z",
+ "updated_at": "2026-06-25T07:59:09Z",
+ "closed_at": null,
+ "assignee": null,
+ "author_association": "MEMBER",
+ "issue_field_values": [],
+ "type": null,
+ "active_lock_reason": null,
+ "sub_issues_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,
+ "closed_by": null,
+ "reactions": {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/489/reactions",
+ "total_count": 0,
+ "+1": 0,
+ "-1": 0,
+ "laugh": 0,
+ "hooray": 0,
+ "confused": 0,
+ "heart": 0,
+ "rocket": 0,
+ "eyes": 0
+ },
+ "timeline_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/489/timeline",
+ "performed_via_github_app": null,
+ "state_reason": null,
+ "pinned_comment": null
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/11-r_h_g_issues_489.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/11-r_h_g_issues_489.json
new file mode 100644
index 0000000000..988c056d8b
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/11-r_h_g_issues_489.json
@@ -0,0 +1,133 @@
+{
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/489",
+ "repository_url": "https://api.github.com/repos/hub4j-test-org/github-api",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/489/labels{/name}",
+ "comments_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/489/comments",
+ "events_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/489/events",
+ "html_url": "https://github.com/hub4j-test-org/github-api/issues/489",
+ "id": 4741897077,
+ "node_id": "I_kwDODFTdCc8AAAABGqObdQ",
+ "number": 489,
+ "title": "Issue A2 for sort test",
+ "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": [],
+ "state": "closed",
+ "locked": false,
+ "assignees": [],
+ "milestone": {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/7",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7/labels",
+ "id": 16523772,
+ "node_id": "MI_kwDODFTdCc4A_CH8",
+ "number": 7,
+ "title": "Milestone Sort A",
+ "description": "First milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 1,
+ "closed_issues": 1,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:06Z",
+ "updated_at": "2026-06-25T07:59:10Z",
+ "due_on": "2025-06-01T00:00:00Z",
+ "closed_at": null
+ },
+ "comments": 0,
+ "created_at": "2026-06-25T07:59:09Z",
+ "updated_at": "2026-06-25T07:59:10Z",
+ "closed_at": "2026-06-25T07:59:10Z",
+ "assignee": null,
+ "author_association": "MEMBER",
+ "issue_field_values": [],
+ "type": null,
+ "active_lock_reason": null,
+ "sub_issues_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,
+ "closed_by": {
+ "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
+ },
+ "reactions": {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/489/reactions",
+ "total_count": 0,
+ "+1": 0,
+ "-1": 0,
+ "laugh": 0,
+ "hooray": 0,
+ "confused": 0,
+ "heart": 0,
+ "rocket": 0,
+ "eyes": 0
+ },
+ "timeline_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/489/timeline",
+ "performed_via_github_app": null,
+ "state_reason": "completed",
+ "pinned_comment": null
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/12-r_h_g_issues.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/12-r_h_g_issues.json
new file mode 100644
index 0000000000..052f544c9c
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/12-r_h_g_issues.json
@@ -0,0 +1,113 @@
+{
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/490",
+ "repository_url": "https://api.github.com/repos/hub4j-test-org/github-api",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/490/labels{/name}",
+ "comments_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/490/comments",
+ "events_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/490/events",
+ "html_url": "https://github.com/hub4j-test-org/github-api/issues/490",
+ "id": 4741897242,
+ "node_id": "I_kwDODFTdCc8AAAABGqOcGg",
+ "number": 490,
+ "title": "Issue B1 for sort test",
+ "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": [],
+ "state": "open",
+ "locked": false,
+ "assignees": [],
+ "milestone": {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/8",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/8",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/8/labels",
+ "id": 16523773,
+ "node_id": "MI_kwDODFTdCc4A_CH9",
+ "number": 8,
+ "title": "Milestone Sort B",
+ "description": "Second milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 1,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:07Z",
+ "updated_at": "2026-06-25T07:59:11Z",
+ "due_on": "2025-12-01T00:00:00Z",
+ "closed_at": null
+ },
+ "comments": 0,
+ "created_at": "2026-06-25T07:59:11Z",
+ "updated_at": "2026-06-25T07:59:11Z",
+ "closed_at": null,
+ "assignee": null,
+ "author_association": "MEMBER",
+ "issue_field_values": [],
+ "type": null,
+ "active_lock_reason": null,
+ "sub_issues_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,
+ "closed_by": null,
+ "reactions": {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/490/reactions",
+ "total_count": 0,
+ "+1": 0,
+ "-1": 0,
+ "laugh": 0,
+ "hooray": 0,
+ "confused": 0,
+ "heart": 0,
+ "rocket": 0,
+ "eyes": 0
+ },
+ "timeline_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/490/timeline",
+ "performed_via_github_app": null,
+ "state_reason": null,
+ "pinned_comment": null
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/13-r_h_g_milestones.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/13-r_h_g_milestones.json
new file mode 100644
index 0000000000..85f9e28e8d
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/13-r_h_g_milestones.json
@@ -0,0 +1,116 @@
+[
+ {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/1",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/1",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/1/labels",
+ "id": 7188888,
+ "node_id": "MI_kwDODFTdCc4AbbGY",
+ "number": 1,
+ "title": "test-milestone",
+ "description": "",
+ "creator": {
+ "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
+ },
+ "open_issues": 1,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2021-09-25T18:57:12Z",
+ "updated_at": "2021-09-25T18:57:37Z",
+ "due_on": "2021-09-16T00:00:00Z",
+ "closed_at": null
+ },
+ {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/8",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/8",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/8/labels",
+ "id": 16523773,
+ "node_id": "MI_kwDODFTdCc4A_CH9",
+ "number": 8,
+ "title": "Milestone Sort B",
+ "description": "Second milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 1,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:07Z",
+ "updated_at": "2026-06-25T07:59:11Z",
+ "due_on": "2025-12-01T00:00:00Z",
+ "closed_at": null
+ },
+ {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/7",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7/labels",
+ "id": 16523772,
+ "node_id": "MI_kwDODFTdCc4A_CH8",
+ "number": 7,
+ "title": "Milestone Sort A",
+ "description": "First milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 1,
+ "closed_issues": 1,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:06Z",
+ "updated_at": "2026-06-25T07:59:10Z",
+ "due_on": "2025-06-01T00:00:00Z",
+ "closed_at": null
+ }
+]
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/14-r_h_g_milestones.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/14-r_h_g_milestones.json
new file mode 100644
index 0000000000..184a0e2bf2
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/14-r_h_g_milestones.json
@@ -0,0 +1,116 @@
+[
+ {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/7",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7/labels",
+ "id": 16523772,
+ "node_id": "MI_kwDODFTdCc4A_CH8",
+ "number": 7,
+ "title": "Milestone Sort A",
+ "description": "First milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 1,
+ "closed_issues": 1,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:06Z",
+ "updated_at": "2026-06-25T07:59:10Z",
+ "due_on": "2025-06-01T00:00:00Z",
+ "closed_at": null
+ },
+ {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/8",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/8",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/8/labels",
+ "id": 16523773,
+ "node_id": "MI_kwDODFTdCc4A_CH9",
+ "number": 8,
+ "title": "Milestone Sort B",
+ "description": "Second milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 1,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:07Z",
+ "updated_at": "2026-06-25T07:59:11Z",
+ "due_on": "2025-12-01T00:00:00Z",
+ "closed_at": null
+ },
+ {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/1",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/1",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/1/labels",
+ "id": 7188888,
+ "node_id": "MI_kwDODFTdCc4AbbGY",
+ "number": 1,
+ "title": "test-milestone",
+ "description": "",
+ "creator": {
+ "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
+ },
+ "open_issues": 1,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2021-09-25T18:57:12Z",
+ "updated_at": "2021-09-25T18:57:37Z",
+ "due_on": "2021-09-16T00:00:00Z",
+ "closed_at": null
+ }
+]
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/2-r_h_github-api.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/2-r_h_github-api.json
new file mode 100644
index 0000000000..bccafe9a1b
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/2-r_h_github-api.json
@@ -0,0 +1,403 @@
+{
+ "id": 206888201,
+ "node_id": "MDEwOlJlcG9zaXRvcnkyMDY4ODgyMDE=",
+ "name": "github-api",
+ "full_name": "hub4j-test-org/github-api",
+ "private": false,
+ "owner": {
+ "login": "hub4j-test-org",
+ "id": 7544739,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjc1NDQ3Mzk=",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7544739?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/hub4j-test-org",
+ "html_url": "https://github.com/hub4j-test-org",
+ "followers_url": "https://api.github.com/users/hub4j-test-org/followers",
+ "following_url": "https://api.github.com/users/hub4j-test-org/following{/other_user}",
+ "gists_url": "https://api.github.com/users/hub4j-test-org/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/hub4j-test-org/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/hub4j-test-org/subscriptions",
+ "organizations_url": "https://api.github.com/users/hub4j-test-org/orgs",
+ "repos_url": "https://api.github.com/users/hub4j-test-org/repos",
+ "events_url": "https://api.github.com/users/hub4j-test-org/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/hub4j-test-org/received_events",
+ "type": "Organization",
+ "user_view_type": "public",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/hub4j-test-org/github-api",
+ "description": "Tricky",
+ "fork": true,
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api",
+ "forks_url": "https://api.github.com/repos/hub4j-test-org/github-api/forks",
+ "keys_url": "https://api.github.com/repos/hub4j-test-org/github-api/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/hub4j-test-org/github-api/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/hub4j-test-org/github-api/teams",
+ "hooks_url": "https://api.github.com/repos/hub4j-test-org/github-api/hooks",
+ "issue_events_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/hub4j-test-org/github-api/events",
+ "assignees_url": "https://api.github.com/repos/hub4j-test-org/github-api/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/hub4j-test-org/github-api/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/hub4j-test-org/github-api/tags",
+ "blobs_url": "https://api.github.com/repos/hub4j-test-org/github-api/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/hub4j-test-org/github-api/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/hub4j-test-org/github-api/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/hub4j-test-org/github-api/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/hub4j-test-org/github-api/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/hub4j-test-org/github-api/languages",
+ "stargazers_url": "https://api.github.com/repos/hub4j-test-org/github-api/stargazers",
+ "contributors_url": "https://api.github.com/repos/hub4j-test-org/github-api/contributors",
+ "subscribers_url": "https://api.github.com/repos/hub4j-test-org/github-api/subscribers",
+ "subscription_url": "https://api.github.com/repos/hub4j-test-org/github-api/subscription",
+ "commits_url": "https://api.github.com/repos/hub4j-test-org/github-api/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/hub4j-test-org/github-api/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/hub4j-test-org/github-api/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/hub4j-test-org/github-api/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/hub4j-test-org/github-api/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/hub4j-test-org/github-api/merges",
+ "archive_url": "https://api.github.com/repos/hub4j-test-org/github-api/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/hub4j-test-org/github-api/downloads",
+ "issues_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/hub4j-test-org/github-api/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/hub4j-test-org/github-api/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/labels{/name}",
+ "releases_url": "https://api.github.com/repos/hub4j-test-org/github-api/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/hub4j-test-org/github-api/deployments",
+ "created_at": "2019-09-06T23:26:04Z",
+ "updated_at": "2024-03-22T23:30:32Z",
+ "pushed_at": "2024-06-16T10:20:03Z",
+ "git_url": "git://github.com/hub4j-test-org/github-api.git",
+ "ssh_url": "git@github.com:hub4j-test-org/github-api.git",
+ "clone_url": "https://github.com/hub4j-test-org/github-api.git",
+ "svn_url": "https://github.com/hub4j-test-org/github-api",
+ "homepage": "http://github-api.kohsuke.org/",
+ "size": 18977,
+ "stargazers_count": 1,
+ "watchers_count": 1,
+ "language": "Java",
+ "has_issues": true,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": true,
+ "has_pages": false,
+ "has_discussions": false,
+ "forks_count": 0,
+ "mirror_url": null,
+ "archived": false,
+ "disabled": false,
+ "open_issues_count": 2,
+ "license": {
+ "key": "mit",
+ "name": "MIT License",
+ "spdx_id": "MIT",
+ "url": "https://api.github.com/licenses/mit",
+ "node_id": "MDc6TGljZW5zZTEz"
+ },
+ "allow_forking": true,
+ "is_template": false,
+ "web_commit_signoff_required": false,
+ "has_pull_requests": true,
+ "pull_request_creation_policy": "all",
+ "topics": [],
+ "visibility": "public",
+ "forks": 0,
+ "open_issues": 2,
+ "watchers": 1,
+ "default_branch": "main",
+ "permissions": {
+ "admin": true,
+ "maintain": true,
+ "push": true,
+ "triage": true,
+ "pull": true
+ },
+ "temp_clone_token": "",
+ "allow_squash_merge": true,
+ "allow_merge_commit": true,
+ "allow_rebase_merge": true,
+ "allow_auto_merge": false,
+ "delete_branch_on_merge": false,
+ "allow_update_branch": false,
+ "use_squash_pr_title_as_default": false,
+ "squash_merge_commit_message": "COMMIT_MESSAGES",
+ "squash_merge_commit_title": "COMMIT_OR_PR_TITLE",
+ "merge_commit_message": "PR_TITLE",
+ "merge_commit_title": "MERGE_MESSAGE",
+ "custom_properties": {},
+ "organization": {
+ "login": "hub4j-test-org",
+ "id": 7544739,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjc1NDQ3Mzk=",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7544739?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/hub4j-test-org",
+ "html_url": "https://github.com/hub4j-test-org",
+ "followers_url": "https://api.github.com/users/hub4j-test-org/followers",
+ "following_url": "https://api.github.com/users/hub4j-test-org/following{/other_user}",
+ "gists_url": "https://api.github.com/users/hub4j-test-org/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/hub4j-test-org/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/hub4j-test-org/subscriptions",
+ "organizations_url": "https://api.github.com/users/hub4j-test-org/orgs",
+ "repos_url": "https://api.github.com/users/hub4j-test-org/repos",
+ "events_url": "https://api.github.com/users/hub4j-test-org/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/hub4j-test-org/received_events",
+ "type": "Organization",
+ "user_view_type": "public",
+ "site_admin": false
+ },
+ "parent": {
+ "id": 617210,
+ "node_id": "MDEwOlJlcG9zaXRvcnk2MTcyMTA=",
+ "name": "github-api",
+ "full_name": "hub4j/github-api",
+ "private": false,
+ "owner": {
+ "login": "hub4j",
+ "id": 54909825,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjU0OTA5ODI1",
+ "avatar_url": "https://avatars.githubusercontent.com/u/54909825?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/hub4j",
+ "html_url": "https://github.com/hub4j",
+ "followers_url": "https://api.github.com/users/hub4j/followers",
+ "following_url": "https://api.github.com/users/hub4j/following{/other_user}",
+ "gists_url": "https://api.github.com/users/hub4j/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/hub4j/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/hub4j/subscriptions",
+ "organizations_url": "https://api.github.com/users/hub4j/orgs",
+ "repos_url": "https://api.github.com/users/hub4j/repos",
+ "events_url": "https://api.github.com/users/hub4j/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/hub4j/received_events",
+ "type": "Organization",
+ "user_view_type": "public",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/hub4j/github-api",
+ "description": "Java API for GitHub",
+ "fork": false,
+ "url": "https://api.github.com/repos/hub4j/github-api",
+ "forks_url": "https://api.github.com/repos/hub4j/github-api/forks",
+ "keys_url": "https://api.github.com/repos/hub4j/github-api/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/hub4j/github-api/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/hub4j/github-api/teams",
+ "hooks_url": "https://api.github.com/repos/hub4j/github-api/hooks",
+ "issue_events_url": "https://api.github.com/repos/hub4j/github-api/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/hub4j/github-api/events",
+ "assignees_url": "https://api.github.com/repos/hub4j/github-api/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/hub4j/github-api/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/hub4j/github-api/tags",
+ "blobs_url": "https://api.github.com/repos/hub4j/github-api/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/hub4j/github-api/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/hub4j/github-api/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/hub4j/github-api/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/hub4j/github-api/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/hub4j/github-api/languages",
+ "stargazers_url": "https://api.github.com/repos/hub4j/github-api/stargazers",
+ "contributors_url": "https://api.github.com/repos/hub4j/github-api/contributors",
+ "subscribers_url": "https://api.github.com/repos/hub4j/github-api/subscribers",
+ "subscription_url": "https://api.github.com/repos/hub4j/github-api/subscription",
+ "commits_url": "https://api.github.com/repos/hub4j/github-api/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/hub4j/github-api/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/hub4j/github-api/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/hub4j/github-api/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/hub4j/github-api/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/hub4j/github-api/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/hub4j/github-api/merges",
+ "archive_url": "https://api.github.com/repos/hub4j/github-api/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/hub4j/github-api/downloads",
+ "issues_url": "https://api.github.com/repos/hub4j/github-api/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/hub4j/github-api/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/hub4j/github-api/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/hub4j/github-api/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/hub4j/github-api/labels{/name}",
+ "releases_url": "https://api.github.com/repos/hub4j/github-api/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/hub4j/github-api/deployments",
+ "created_at": "2010-04-19T04:13:03Z",
+ "updated_at": "2026-06-18T11:50:40Z",
+ "pushed_at": "2026-06-07T19:17:51Z",
+ "git_url": "git://github.com/hub4j/github-api.git",
+ "ssh_url": "git@github.com:hub4j/github-api.git",
+ "clone_url": "https://github.com/hub4j/github-api.git",
+ "svn_url": "https://github.com/hub4j/github-api",
+ "homepage": "https://hub4j.github.io/github-api/",
+ "size": 68365,
+ "stargazers_count": 1251,
+ "watchers_count": 1251,
+ "language": "Java",
+ "has_issues": true,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": true,
+ "has_pages": true,
+ "has_discussions": true,
+ "forks_count": 776,
+ "mirror_url": null,
+ "archived": false,
+ "disabled": false,
+ "open_issues_count": 197,
+ "license": {
+ "key": "mit",
+ "name": "MIT License",
+ "spdx_id": "MIT",
+ "url": "https://api.github.com/licenses/mit",
+ "node_id": "MDc6TGljZW5zZTEz"
+ },
+ "allow_forking": true,
+ "is_template": false,
+ "web_commit_signoff_required": false,
+ "has_pull_requests": true,
+ "pull_request_creation_policy": "all",
+ "topics": [
+ "api",
+ "client-library",
+ "github",
+ "github-api",
+ "github-api-v3",
+ "java",
+ "java-api"
+ ],
+ "visibility": "public",
+ "forks": 776,
+ "open_issues": 197,
+ "watchers": 1251,
+ "default_branch": "main"
+ },
+ "source": {
+ "id": 617210,
+ "node_id": "MDEwOlJlcG9zaXRvcnk2MTcyMTA=",
+ "name": "github-api",
+ "full_name": "hub4j/github-api",
+ "private": false,
+ "owner": {
+ "login": "hub4j",
+ "id": 54909825,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjU0OTA5ODI1",
+ "avatar_url": "https://avatars.githubusercontent.com/u/54909825?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/hub4j",
+ "html_url": "https://github.com/hub4j",
+ "followers_url": "https://api.github.com/users/hub4j/followers",
+ "following_url": "https://api.github.com/users/hub4j/following{/other_user}",
+ "gists_url": "https://api.github.com/users/hub4j/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/hub4j/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/hub4j/subscriptions",
+ "organizations_url": "https://api.github.com/users/hub4j/orgs",
+ "repos_url": "https://api.github.com/users/hub4j/repos",
+ "events_url": "https://api.github.com/users/hub4j/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/hub4j/received_events",
+ "type": "Organization",
+ "user_view_type": "public",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/hub4j/github-api",
+ "description": "Java API for GitHub",
+ "fork": false,
+ "url": "https://api.github.com/repos/hub4j/github-api",
+ "forks_url": "https://api.github.com/repos/hub4j/github-api/forks",
+ "keys_url": "https://api.github.com/repos/hub4j/github-api/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/hub4j/github-api/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/hub4j/github-api/teams",
+ "hooks_url": "https://api.github.com/repos/hub4j/github-api/hooks",
+ "issue_events_url": "https://api.github.com/repos/hub4j/github-api/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/hub4j/github-api/events",
+ "assignees_url": "https://api.github.com/repos/hub4j/github-api/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/hub4j/github-api/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/hub4j/github-api/tags",
+ "blobs_url": "https://api.github.com/repos/hub4j/github-api/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/hub4j/github-api/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/hub4j/github-api/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/hub4j/github-api/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/hub4j/github-api/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/hub4j/github-api/languages",
+ "stargazers_url": "https://api.github.com/repos/hub4j/github-api/stargazers",
+ "contributors_url": "https://api.github.com/repos/hub4j/github-api/contributors",
+ "subscribers_url": "https://api.github.com/repos/hub4j/github-api/subscribers",
+ "subscription_url": "https://api.github.com/repos/hub4j/github-api/subscription",
+ "commits_url": "https://api.github.com/repos/hub4j/github-api/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/hub4j/github-api/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/hub4j/github-api/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/hub4j/github-api/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/hub4j/github-api/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/hub4j/github-api/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/hub4j/github-api/merges",
+ "archive_url": "https://api.github.com/repos/hub4j/github-api/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/hub4j/github-api/downloads",
+ "issues_url": "https://api.github.com/repos/hub4j/github-api/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/hub4j/github-api/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/hub4j/github-api/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/hub4j/github-api/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/hub4j/github-api/labels{/name}",
+ "releases_url": "https://api.github.com/repos/hub4j/github-api/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/hub4j/github-api/deployments",
+ "created_at": "2010-04-19T04:13:03Z",
+ "updated_at": "2026-06-18T11:50:40Z",
+ "pushed_at": "2026-06-07T19:17:51Z",
+ "git_url": "git://github.com/hub4j/github-api.git",
+ "ssh_url": "git@github.com:hub4j/github-api.git",
+ "clone_url": "https://github.com/hub4j/github-api.git",
+ "svn_url": "https://github.com/hub4j/github-api",
+ "homepage": "https://hub4j.github.io/github-api/",
+ "size": 68365,
+ "stargazers_count": 1251,
+ "watchers_count": 1251,
+ "language": "Java",
+ "has_issues": true,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": true,
+ "has_pages": true,
+ "has_discussions": true,
+ "forks_count": 776,
+ "mirror_url": null,
+ "archived": false,
+ "disabled": false,
+ "open_issues_count": 197,
+ "license": {
+ "key": "mit",
+ "name": "MIT License",
+ "spdx_id": "MIT",
+ "url": "https://api.github.com/licenses/mit",
+ "node_id": "MDc6TGljZW5zZTEz"
+ },
+ "allow_forking": true,
+ "is_template": false,
+ "web_commit_signoff_required": false,
+ "has_pull_requests": true,
+ "pull_request_creation_policy": "all",
+ "topics": [
+ "api",
+ "client-library",
+ "github",
+ "github-api",
+ "github-api-v3",
+ "java",
+ "java-api"
+ ],
+ "visibility": "public",
+ "forks": 776,
+ "open_issues": 197,
+ "watchers": 1251,
+ "default_branch": "main"
+ },
+ "security_and_analysis": {
+ "secret_scanning": {
+ "status": "disabled"
+ },
+ "secret_scanning_push_protection": {
+ "status": "disabled"
+ },
+ "dependabot_security_updates": {
+ "status": "disabled"
+ },
+ "secret_scanning_non_provider_patterns": {
+ "status": "disabled"
+ },
+ "secret_scanning_validity_checks": {
+ "status": "disabled"
+ }
+ },
+ "network_count": 776,
+ "subscribers_count": 0
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/3-r_h_g_milestones.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/3-r_h_g_milestones.json
new file mode 100644
index 0000000000..a3360da3d7
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/3-r_h_g_milestones.json
@@ -0,0 +1,38 @@
+{
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/7",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7/labels",
+ "id": 16523772,
+ "node_id": "MI_kwDODFTdCc4A_CH8",
+ "number": 7,
+ "title": "Milestone Sort A",
+ "description": "First milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 0,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:06Z",
+ "updated_at": "2026-06-25T07:59:06Z",
+ "due_on": null,
+ "closed_at": null
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/4-r_h_g_milestones_7.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/4-r_h_g_milestones_7.json
new file mode 100644
index 0000000000..2f5ccdcfe4
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/4-r_h_g_milestones_7.json
@@ -0,0 +1,38 @@
+{
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/7",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7/labels",
+ "id": 16523772,
+ "node_id": "MI_kwDODFTdCc4A_CH8",
+ "number": 7,
+ "title": "Milestone Sort A",
+ "description": "First milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 0,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:06Z",
+ "updated_at": "2026-06-25T07:59:07Z",
+ "due_on": "2025-06-01T00:00:00Z",
+ "closed_at": null
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/5-r_h_g_milestones.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/5-r_h_g_milestones.json
new file mode 100644
index 0000000000..0f5d54b496
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/5-r_h_g_milestones.json
@@ -0,0 +1,38 @@
+{
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/8",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/8",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/8/labels",
+ "id": 16523773,
+ "node_id": "MI_kwDODFTdCc4A_CH9",
+ "number": 8,
+ "title": "Milestone Sort B",
+ "description": "Second milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 0,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:07Z",
+ "updated_at": "2026-06-25T07:59:07Z",
+ "due_on": null,
+ "closed_at": null
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/6-r_h_g_milestones_8.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/6-r_h_g_milestones_8.json
new file mode 100644
index 0000000000..0a616bd89f
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/6-r_h_g_milestones_8.json
@@ -0,0 +1,38 @@
+{
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/8",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/8",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/8/labels",
+ "id": 16523773,
+ "node_id": "MI_kwDODFTdCc4A_CH9",
+ "number": 8,
+ "title": "Milestone Sort B",
+ "description": "Second milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 0,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:07Z",
+ "updated_at": "2026-06-25T07:59:07Z",
+ "due_on": "2025-12-01T00:00:00Z",
+ "closed_at": null
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/7-r_h_g_milestones.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/7-r_h_g_milestones.json
new file mode 100644
index 0000000000..6b73aa05b2
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/7-r_h_g_milestones.json
@@ -0,0 +1,116 @@
+[
+ {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/1",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/1",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/1/labels",
+ "id": 7188888,
+ "node_id": "MI_kwDODFTdCc4AbbGY",
+ "number": 1,
+ "title": "test-milestone",
+ "description": "",
+ "creator": {
+ "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
+ },
+ "open_issues": 1,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2021-09-25T18:57:12Z",
+ "updated_at": "2021-09-25T18:57:37Z",
+ "due_on": "2021-09-16T00:00:00Z",
+ "closed_at": null
+ },
+ {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/7",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7/labels",
+ "id": 16523772,
+ "node_id": "MI_kwDODFTdCc4A_CH8",
+ "number": 7,
+ "title": "Milestone Sort A",
+ "description": "First milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 0,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:06Z",
+ "updated_at": "2026-06-25T07:59:07Z",
+ "due_on": "2025-06-01T00:00:00Z",
+ "closed_at": null
+ },
+ {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/8",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/8",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/8/labels",
+ "id": 16523773,
+ "node_id": "MI_kwDODFTdCc4A_CH9",
+ "number": 8,
+ "title": "Milestone Sort B",
+ "description": "Second milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 0,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:07Z",
+ "updated_at": "2026-06-25T07:59:07Z",
+ "due_on": "2025-12-01T00:00:00Z",
+ "closed_at": null
+ }
+]
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/8-r_h_g_milestones.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/8-r_h_g_milestones.json
new file mode 100644
index 0000000000..2a98932046
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/8-r_h_g_milestones.json
@@ -0,0 +1,116 @@
+[
+ {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/8",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/8",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/8/labels",
+ "id": 16523773,
+ "node_id": "MI_kwDODFTdCc4A_CH9",
+ "number": 8,
+ "title": "Milestone Sort B",
+ "description": "Second milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 0,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:07Z",
+ "updated_at": "2026-06-25T07:59:07Z",
+ "due_on": "2025-12-01T00:00:00Z",
+ "closed_at": null
+ },
+ {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/7",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7/labels",
+ "id": 16523772,
+ "node_id": "MI_kwDODFTdCc4A_CH8",
+ "number": 7,
+ "title": "Milestone Sort A",
+ "description": "First milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 0,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:06Z",
+ "updated_at": "2026-06-25T07:59:07Z",
+ "due_on": "2025-06-01T00:00:00Z",
+ "closed_at": null
+ },
+ {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/1",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/1",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/1/labels",
+ "id": 7188888,
+ "node_id": "MI_kwDODFTdCc4AbbGY",
+ "number": 1,
+ "title": "test-milestone",
+ "description": "",
+ "creator": {
+ "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
+ },
+ "open_issues": 1,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2021-09-25T18:57:12Z",
+ "updated_at": "2021-09-25T18:57:37Z",
+ "due_on": "2021-09-16T00:00:00Z",
+ "closed_at": null
+ }
+]
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/9-r_h_g_issues.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/9-r_h_g_issues.json
new file mode 100644
index 0000000000..3d08838451
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/__files/9-r_h_g_issues.json
@@ -0,0 +1,113 @@
+{
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/488",
+ "repository_url": "https://api.github.com/repos/hub4j-test-org/github-api",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/488/labels{/name}",
+ "comments_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/488/comments",
+ "events_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/488/events",
+ "html_url": "https://github.com/hub4j-test-org/github-api/issues/488",
+ "id": 4741896986,
+ "node_id": "I_kwDODFTdCc8AAAABGqObGg",
+ "number": 488,
+ "title": "Issue A1 for sort test",
+ "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": [],
+ "state": "open",
+ "locked": false,
+ "assignees": [],
+ "milestone": {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7",
+ "html_url": "https://github.com/hub4j-test-org/github-api/milestone/7",
+ "labels_url": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7/labels",
+ "id": 16523772,
+ "node_id": "MI_kwDODFTdCc4A_CH8",
+ "number": 7,
+ "title": "Milestone Sort A",
+ "description": "First milestone",
+ "creator": {
+ "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
+ },
+ "open_issues": 1,
+ "closed_issues": 0,
+ "state": "open",
+ "created_at": "2026-06-25T07:59:06Z",
+ "updated_at": "2026-06-25T07:59:09Z",
+ "due_on": "2025-06-01T00:00:00Z",
+ "closed_at": null
+ },
+ "comments": 0,
+ "created_at": "2026-06-25T07:59:09Z",
+ "updated_at": "2026-06-25T07:59:09Z",
+ "closed_at": null,
+ "assignee": null,
+ "author_association": "MEMBER",
+ "issue_field_values": [],
+ "type": null,
+ "active_lock_reason": null,
+ "sub_issues_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,
+ "closed_by": null,
+ "reactions": {
+ "url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/488/reactions",
+ "total_count": 0,
+ "+1": 0,
+ "-1": 0,
+ "laugh": 0,
+ "hooray": 0,
+ "confused": 0,
+ "heart": 0,
+ "rocket": 0,
+ "eyes": 0
+ },
+ "timeline_url": "https://api.github.com/repos/hub4j-test-org/github-api/issues/488/timeline",
+ "performed_via_github_app": null,
+ "state_reason": null,
+ "pinned_comment": null
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/1-orgs_hub4j-test-org.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/1-orgs_hub4j-test-org.json
new file mode 100644
index 0000000000..b679b0fe4a
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/1-orgs_hub4j-test-org.json
@@ -0,0 +1,47 @@
+{
+ "id": "52de9170-60f6-4085-8b3e-2c5a61c79eff",
+ "name": "orgs_hub4j-test-org",
+ "request": {
+ "url": "/orgs/hub4j-test-org",
+ "method": "GET",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ }
+ },
+ "response": {
+ "status": 200,
+ "bodyFileName": "1-orgs_hub4j-test-org.json",
+ "headers": {
+ "Date": "Thu, 25 Jun 2026 07:59:05 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/\"41dbc785ba90892da196b1337bc976897fab042446f4ee5eae6bf5c217b96418\"",
+ "Last-Modified": "Tue, 05 Aug 2025 00:53:03 GMT",
+ "X-OAuth-Scopes": "admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, gist, notifications, project, repo, user, workflow, write:discussion",
+ "X-Accepted-OAuth-Scopes": "admin:org, read:org, repo, user, write:org",
+ "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, Warning",
+ "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": "4957",
+ "X-RateLimit-Reset": "1782377714",
+ "X-RateLimit-Used": "43",
+ "X-RateLimit-Resource": "core",
+ "X-GitHub-Request-Id": "C14E:1483EF:3AA0546:38A0E24:6A3CDFC9"
+ }
+ },
+ "uuid": "52de9170-60f6-4085-8b3e-2c5a61c79eff",
+ "persistent": true,
+ "insertionIndex": 1
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/10-r_h_g_issues.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/10-r_h_g_issues.json
new file mode 100644
index 0000000000..af45c71b72
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/10-r_h_g_issues.json
@@ -0,0 +1,57 @@
+{
+ "id": "6fccaf5d-b51b-4a9a-8446-cc3b72a91f5e",
+ "name": "repos_hub4j-test-org_github-api_issues",
+ "request": {
+ "url": "/repos/hub4j-test-org/github-api/issues",
+ "method": "POST",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ },
+ "bodyPatterns": [
+ {
+ "equalToJson": "{\"milestone\":7,\"assignees\":[],\"title\":\"Issue A2 for sort test\",\"labels\":[]}",
+ "ignoreArrayOrder": true,
+ "ignoreExtraElements": false
+ }
+ ]
+ },
+ "response": {
+ "status": 201,
+ "bodyFileName": "10-r_h_g_issues.json",
+ "headers": {
+ "Date": "Thu, 25 Jun 2026 07:59:10 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": "\"cbfa8015c24a0f19cb4bb0bc6c42e3ca7b41dd2bd0cf94716fe8734f4a984e6a\"",
+ "X-OAuth-Scopes": "admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, gist, notifications, project, repo, user, workflow, write:discussion",
+ "X-Accepted-OAuth-Scopes": "",
+ "X-GitHub-Media-Type": "github.v3; format=json",
+ "Deprecation": "Tue, 10 Mar 2026 00:00:00 GMT",
+ "Sunset": "Fri, 10 Mar 2028 00:00:00 GMT",
+ "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, Warning",
+ "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": "4895",
+ "X-RateLimit-Reset": "1782377714",
+ "X-RateLimit-Used": "105",
+ "X-RateLimit-Resource": "core",
+ "X-GitHub-Request-Id": "C18E:1483EF:3AA30BD:38A3764:6A3CDFCD",
+ "Link": "; rel=\"deprecation\"; type=\"text/html\"",
+ "Location": "https://api.github.com/repos/hub4j-test-org/github-api/issues/489"
+ }
+ },
+ "uuid": "6fccaf5d-b51b-4a9a-8446-cc3b72a91f5e",
+ "persistent": true,
+ "insertionIndex": 10
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/11-r_h_g_issues_489.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/11-r_h_g_issues_489.json
new file mode 100644
index 0000000000..d51fe434a3
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/11-r_h_g_issues_489.json
@@ -0,0 +1,56 @@
+{
+ "id": "e3d5f6d8-b350-4a97-bcdb-03ce4d9165fb",
+ "name": "repos_hub4j-test-org_github-api_issues_489",
+ "request": {
+ "url": "/repos/hub4j-test-org/github-api/issues/489",
+ "method": "PATCH",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ },
+ "bodyPatterns": [
+ {
+ "equalToJson": "{\"state\":\"closed\"}",
+ "ignoreArrayOrder": true,
+ "ignoreExtraElements": false
+ }
+ ]
+ },
+ "response": {
+ "status": 200,
+ "bodyFileName": "11-r_h_g_issues_489.json",
+ "headers": {
+ "Date": "Thu, 25 Jun 2026 07:59:11 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/\"dedd87bd4d06bfce14397460686278e5e32894819c7c5f4aa4fbbc6722e16108\"",
+ "X-OAuth-Scopes": "admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, gist, notifications, project, repo, user, workflow, write:discussion",
+ "X-Accepted-OAuth-Scopes": "",
+ "X-GitHub-Media-Type": "github.v3; format=json",
+ "Deprecation": "Tue, 10 Mar 2026 00:00:00 GMT",
+ "Sunset": "Fri, 10 Mar 2028 00:00:00 GMT",
+ "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, Warning",
+ "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": "4894",
+ "X-RateLimit-Reset": "1782377714",
+ "X-RateLimit-Used": "106",
+ "X-RateLimit-Resource": "core",
+ "X-GitHub-Request-Id": "C196:1FD666:3AFE95E:38FDBF5:6A3CDFCE",
+ "Link": "; rel=\"deprecation\"; type=\"text/html\""
+ }
+ },
+ "uuid": "e3d5f6d8-b350-4a97-bcdb-03ce4d9165fb",
+ "persistent": true,
+ "insertionIndex": 11
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/12-r_h_g_issues.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/12-r_h_g_issues.json
new file mode 100644
index 0000000000..af23f961b3
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/12-r_h_g_issues.json
@@ -0,0 +1,57 @@
+{
+ "id": "4a7d5f5c-bef7-4b26-8fe0-75d050042637",
+ "name": "repos_hub4j-test-org_github-api_issues",
+ "request": {
+ "url": "/repos/hub4j-test-org/github-api/issues",
+ "method": "POST",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ },
+ "bodyPatterns": [
+ {
+ "equalToJson": "{\"milestone\":8,\"assignees\":[],\"title\":\"Issue B1 for sort test\",\"labels\":[]}",
+ "ignoreArrayOrder": true,
+ "ignoreExtraElements": false
+ }
+ ]
+ },
+ "response": {
+ "status": 201,
+ "bodyFileName": "12-r_h_g_issues.json",
+ "headers": {
+ "Date": "Thu, 25 Jun 2026 07:59:11 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": "\"5871ad07e78dc332c24eed805e2f5edfe96a50562bb520befb219f0d9badb498\"",
+ "X-OAuth-Scopes": "admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, gist, notifications, project, repo, user, workflow, write:discussion",
+ "X-Accepted-OAuth-Scopes": "",
+ "X-GitHub-Media-Type": "github.v3; format=json",
+ "Deprecation": "Tue, 10 Mar 2026 00:00:00 GMT",
+ "Sunset": "Fri, 10 Mar 2028 00:00:00 GMT",
+ "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, Warning",
+ "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": "4893",
+ "X-RateLimit-Reset": "1782377714",
+ "X-RateLimit-Used": "107",
+ "X-RateLimit-Resource": "core",
+ "X-GitHub-Request-Id": "D3D4:13D7F2:396CA76:376754C:6A3CDFCF",
+ "Link": "; rel=\"deprecation\"; type=\"text/html\"",
+ "Location": "https://api.github.com/repos/hub4j-test-org/github-api/issues/490"
+ }
+ },
+ "uuid": "4a7d5f5c-bef7-4b26-8fe0-75d050042637",
+ "persistent": true,
+ "insertionIndex": 12
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/13-r_h_g_milestones.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/13-r_h_g_milestones.json
new file mode 100644
index 0000000000..ceba124f14
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/13-r_h_g_milestones.json
@@ -0,0 +1,46 @@
+{
+ "id": "be9cee05-47ef-4ed4-9a0e-0e92b0d94fdd",
+ "name": "repos_hub4j-test-org_github-api_milestones",
+ "request": {
+ "url": "/repos/hub4j-test-org/github-api/milestones?state=open&sort=completeness&direction=asc",
+ "method": "GET",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ }
+ },
+ "response": {
+ "status": 200,
+ "bodyFileName": "13-r_h_g_milestones.json",
+ "headers": {
+ "Date": "Thu, 25 Jun 2026 07:59:12 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/\"b93b45d2ea95ebbe1813c98d6b1559d80808c2c06951e00b22d3ade5432f828e\"",
+ "X-OAuth-Scopes": "admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, gist, notifications, project, repo, user, workflow, write:discussion",
+ "X-Accepted-OAuth-Scopes": "repo",
+ "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, Warning",
+ "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": "4892",
+ "X-RateLimit-Reset": "1782377714",
+ "X-RateLimit-Used": "108",
+ "X-RateLimit-Resource": "core",
+ "X-GitHub-Request-Id": "D3D8:291075:3FF9118:3E05451:6A3CDFD0"
+ }
+ },
+ "uuid": "be9cee05-47ef-4ed4-9a0e-0e92b0d94fdd",
+ "persistent": true,
+ "insertionIndex": 13
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/14-r_h_g_milestones.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/14-r_h_g_milestones.json
new file mode 100644
index 0000000000..d11c79511a
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/14-r_h_g_milestones.json
@@ -0,0 +1,46 @@
+{
+ "id": "c3933a9b-2e0b-41b5-ab9e-4427ddfd4ebf",
+ "name": "repos_hub4j-test-org_github-api_milestones",
+ "request": {
+ "url": "/repos/hub4j-test-org/github-api/milestones?state=open&sort=completeness&direction=desc",
+ "method": "GET",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ }
+ },
+ "response": {
+ "status": 200,
+ "bodyFileName": "14-r_h_g_milestones.json",
+ "headers": {
+ "Date": "Thu, 25 Jun 2026 07:59:12 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/\"6522d077d3125747126023fb9703bf07e8d11b22d2f49c6dee9716d11e060346\"",
+ "X-OAuth-Scopes": "admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, gist, notifications, project, repo, user, workflow, write:discussion",
+ "X-Accepted-OAuth-Scopes": "repo",
+ "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, Warning",
+ "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": "4891",
+ "X-RateLimit-Reset": "1782377714",
+ "X-RateLimit-Used": "109",
+ "X-RateLimit-Resource": "core",
+ "X-GitHub-Request-Id": "D3E4:291075:3FF95C8:3E058C3:6A3CDFD0"
+ }
+ },
+ "uuid": "c3933a9b-2e0b-41b5-ab9e-4427ddfd4ebf",
+ "persistent": true,
+ "insertionIndex": 14
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/2-r_h_github-api.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/2-r_h_github-api.json
new file mode 100644
index 0000000000..b4b389cbe7
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/2-r_h_github-api.json
@@ -0,0 +1,47 @@
+{
+ "id": "6a34a2d8-a58f-489a-951a-3758ab75c715",
+ "name": "repos_hub4j-test-org_github-api",
+ "request": {
+ "url": "/repos/hub4j-test-org/github-api",
+ "method": "GET",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ }
+ },
+ "response": {
+ "status": 200,
+ "bodyFileName": "2-r_h_github-api.json",
+ "headers": {
+ "Date": "Thu, 25 Jun 2026 07:59:06 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/\"4922cf2cf93aefa6cc36fcf6c287feb054082ab32ca8d02f88be34f41a83bf4d\"",
+ "Last-Modified": "Fri, 22 Mar 2024 23:30:32 GMT",
+ "X-OAuth-Scopes": "admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, gist, notifications, project, repo, user, workflow, write:discussion",
+ "X-Accepted-OAuth-Scopes": "repo",
+ "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, Warning",
+ "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": "4903",
+ "X-RateLimit-Reset": "1782377714",
+ "X-RateLimit-Used": "97",
+ "X-RateLimit-Resource": "core",
+ "X-GitHub-Request-Id": "C152:3C0AC5:3A24FA8:382CF08:6A3CDFCA"
+ }
+ },
+ "uuid": "6a34a2d8-a58f-489a-951a-3758ab75c715",
+ "persistent": true,
+ "insertionIndex": 2
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/3-r_h_g_milestones.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/3-r_h_g_milestones.json
new file mode 100644
index 0000000000..6abc45f979
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/3-r_h_g_milestones.json
@@ -0,0 +1,54 @@
+{
+ "id": "c9fc8fb6-9fb1-48ca-a422-02483d91c9e0",
+ "name": "repos_hub4j-test-org_github-api_milestones",
+ "request": {
+ "url": "/repos/hub4j-test-org/github-api/milestones",
+ "method": "POST",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ },
+ "bodyPatterns": [
+ {
+ "equalToJson": "{\"description\":\"First milestone\",\"title\":\"Milestone Sort A\"}",
+ "ignoreArrayOrder": true,
+ "ignoreExtraElements": false
+ }
+ ]
+ },
+ "response": {
+ "status": 201,
+ "bodyFileName": "3-r_h_g_milestones.json",
+ "headers": {
+ "Date": "Thu, 25 Jun 2026 07:59:06 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": "\"fd9d4b6915e2734f59480acda63faac6a6b9f7d7853651ad25a06a8ed220e5e7\"",
+ "X-OAuth-Scopes": "admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, gist, notifications, project, repo, user, workflow, write:discussion",
+ "X-Accepted-OAuth-Scopes": "",
+ "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, Warning",
+ "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": "4902",
+ "X-RateLimit-Reset": "1782377714",
+ "X-RateLimit-Used": "98",
+ "X-RateLimit-Resource": "core",
+ "X-GitHub-Request-Id": "C154:38FA88:3A50130:3859644:6A3CDFCA",
+ "Location": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/7"
+ }
+ },
+ "uuid": "c9fc8fb6-9fb1-48ca-a422-02483d91c9e0",
+ "persistent": true,
+ "insertionIndex": 3
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/4-r_h_g_milestones_7.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/4-r_h_g_milestones_7.json
new file mode 100644
index 0000000000..57c6b35e1e
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/4-r_h_g_milestones_7.json
@@ -0,0 +1,53 @@
+{
+ "id": "e49926ca-0c41-4766-aaef-f5f5bc984c5f",
+ "name": "repos_hub4j-test-org_github-api_milestones_7",
+ "request": {
+ "url": "/repos/hub4j-test-org/github-api/milestones/7",
+ "method": "PATCH",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ },
+ "bodyPatterns": [
+ {
+ "equalToJson": "{\"due_on\":\"2025-06-01T00:00:00Z\"}",
+ "ignoreArrayOrder": true,
+ "ignoreExtraElements": false
+ }
+ ]
+ },
+ "response": {
+ "status": 200,
+ "bodyFileName": "4-r_h_g_milestones_7.json",
+ "headers": {
+ "Date": "Thu, 25 Jun 2026 07:59:07 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/\"299881571d4a7c42bf860eb284ff912f828e007deb9349a349886c51546b72be\"",
+ "X-OAuth-Scopes": "admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, gist, notifications, project, repo, user, workflow, write:discussion",
+ "X-Accepted-OAuth-Scopes": "",
+ "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, Warning",
+ "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": "4901",
+ "X-RateLimit-Reset": "1782377714",
+ "X-RateLimit-Used": "99",
+ "X-RateLimit-Resource": "core",
+ "X-GitHub-Request-Id": "C15A:3B2047:3B4BB5F:3941F92:6A3CDFCA"
+ }
+ },
+ "uuid": "e49926ca-0c41-4766-aaef-f5f5bc984c5f",
+ "persistent": true,
+ "insertionIndex": 4
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/5-r_h_g_milestones.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/5-r_h_g_milestones.json
new file mode 100644
index 0000000000..ba1673f871
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/5-r_h_g_milestones.json
@@ -0,0 +1,54 @@
+{
+ "id": "21e9c794-d599-4926-b35c-a95c2a4b507c",
+ "name": "repos_hub4j-test-org_github-api_milestones",
+ "request": {
+ "url": "/repos/hub4j-test-org/github-api/milestones",
+ "method": "POST",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ },
+ "bodyPatterns": [
+ {
+ "equalToJson": "{\"description\":\"Second milestone\",\"title\":\"Milestone Sort B\"}",
+ "ignoreArrayOrder": true,
+ "ignoreExtraElements": false
+ }
+ ]
+ },
+ "response": {
+ "status": 201,
+ "bodyFileName": "5-r_h_g_milestones.json",
+ "headers": {
+ "Date": "Thu, 25 Jun 2026 07:59:07 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": "\"1ea7d4d538b25e39fe9152a78c10d18f999c0efc9b8e76610d93a3d3d41c7076\"",
+ "X-OAuth-Scopes": "admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, gist, notifications, project, repo, user, workflow, write:discussion",
+ "X-Accepted-OAuth-Scopes": "",
+ "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, Warning",
+ "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": "4900",
+ "X-RateLimit-Reset": "1782377714",
+ "X-RateLimit-Used": "100",
+ "X-RateLimit-Resource": "core",
+ "X-GitHub-Request-Id": "C162:32CC7D:3BC239F:39ADD83:6A3CDFCB",
+ "Location": "https://api.github.com/repos/hub4j-test-org/github-api/milestones/8"
+ }
+ },
+ "uuid": "21e9c794-d599-4926-b35c-a95c2a4b507c",
+ "persistent": true,
+ "insertionIndex": 5
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/6-r_h_g_milestones_8.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/6-r_h_g_milestones_8.json
new file mode 100644
index 0000000000..7667b1a940
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/6-r_h_g_milestones_8.json
@@ -0,0 +1,53 @@
+{
+ "id": "0b0e08c9-a67f-403b-ae7a-8f0059f667ac",
+ "name": "repos_hub4j-test-org_github-api_milestones_8",
+ "request": {
+ "url": "/repos/hub4j-test-org/github-api/milestones/8",
+ "method": "PATCH",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ },
+ "bodyPatterns": [
+ {
+ "equalToJson": "{\"due_on\":\"2025-12-01T00:00:00Z\"}",
+ "ignoreArrayOrder": true,
+ "ignoreExtraElements": false
+ }
+ ]
+ },
+ "response": {
+ "status": 200,
+ "bodyFileName": "6-r_h_g_milestones_8.json",
+ "headers": {
+ "Date": "Thu, 25 Jun 2026 07:59:07 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/\"744085c450b3ffaccc0df7189dffbdb4499b1c477396d6ec426fd4aede1bbd44\"",
+ "X-OAuth-Scopes": "admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, gist, notifications, project, repo, user, workflow, write:discussion",
+ "X-Accepted-OAuth-Scopes": "",
+ "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, Warning",
+ "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": "4899",
+ "X-RateLimit-Reset": "1782377714",
+ "X-RateLimit-Used": "101",
+ "X-RateLimit-Resource": "core",
+ "X-GitHub-Request-Id": "C16C:168D37:3BDEB52:39E8FC3:6A3CDFCB"
+ }
+ },
+ "uuid": "0b0e08c9-a67f-403b-ae7a-8f0059f667ac",
+ "persistent": true,
+ "insertionIndex": 6
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/7-r_h_g_milestones.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/7-r_h_g_milestones.json
new file mode 100644
index 0000000000..6f9380e1e4
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/7-r_h_g_milestones.json
@@ -0,0 +1,46 @@
+{
+ "id": "9ba3d5b4-9454-4f17-8f8f-4d4e63df0833",
+ "name": "repos_hub4j-test-org_github-api_milestones",
+ "request": {
+ "url": "/repos/hub4j-test-org/github-api/milestones?state=open&sort=due-on&direction=asc",
+ "method": "GET",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ }
+ },
+ "response": {
+ "status": 200,
+ "bodyFileName": "7-r_h_g_milestones.json",
+ "headers": {
+ "Date": "Thu, 25 Jun 2026 07:59:08 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/\"1ba97ff4442bbf49e4cec5ffa8a5c9bc4dd128ae6eff05cd4a287ced11d951a0\"",
+ "X-OAuth-Scopes": "admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, gist, notifications, project, repo, user, workflow, write:discussion",
+ "X-Accepted-OAuth-Scopes": "repo",
+ "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, Warning",
+ "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": "4898",
+ "X-RateLimit-Reset": "1782377714",
+ "X-RateLimit-Used": "102",
+ "X-RateLimit-Resource": "core",
+ "X-GitHub-Request-Id": "C176:285D15:38FF1EB:3711F49:6A3CDFCC"
+ }
+ },
+ "uuid": "9ba3d5b4-9454-4f17-8f8f-4d4e63df0833",
+ "persistent": true,
+ "insertionIndex": 7
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/8-r_h_g_milestones.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/8-r_h_g_milestones.json
new file mode 100644
index 0000000000..83320f6cc6
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/8-r_h_g_milestones.json
@@ -0,0 +1,46 @@
+{
+ "id": "f1eae406-05fb-4001-9cff-b0baa66f3411",
+ "name": "repos_hub4j-test-org_github-api_milestones",
+ "request": {
+ "url": "/repos/hub4j-test-org/github-api/milestones?state=open&sort=due-on&direction=desc",
+ "method": "GET",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ }
+ },
+ "response": {
+ "status": 200,
+ "bodyFileName": "8-r_h_g_milestones.json",
+ "headers": {
+ "Date": "Thu, 25 Jun 2026 07:59:08 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/\"f316947ff6e211a217ea410e587ceec9e1cfaa2bbaf33294c0c34dc7d2fc419f\"",
+ "X-OAuth-Scopes": "admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, gist, notifications, project, repo, user, workflow, write:discussion",
+ "X-Accepted-OAuth-Scopes": "repo",
+ "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, Warning",
+ "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": "4897",
+ "X-RateLimit-Reset": "1782377714",
+ "X-RateLimit-Used": "103",
+ "X-RateLimit-Resource": "core",
+ "X-GitHub-Request-Id": "C184:38FA88:3A51729:385AB74:6A3CDFCC"
+ }
+ },
+ "uuid": "f1eae406-05fb-4001-9cff-b0baa66f3411",
+ "persistent": true,
+ "insertionIndex": 8
+}
\ No newline at end of file
diff --git a/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/9-r_h_g_issues.json b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/9-r_h_g_issues.json
new file mode 100644
index 0000000000..009a12b379
--- /dev/null
+++ b/src/test/resources/org/kohsuke/github/GHMilestoneTest/wiremock/testListMilestonesWithSort/mappings/9-r_h_g_issues.json
@@ -0,0 +1,57 @@
+{
+ "id": "5c1619cb-e6e2-4e25-834f-fa9e2a018fd5",
+ "name": "repos_hub4j-test-org_github-api_issues",
+ "request": {
+ "url": "/repos/hub4j-test-org/github-api/issues",
+ "method": "POST",
+ "headers": {
+ "Accept": {
+ "equalTo": "application/vnd.github+json"
+ }
+ },
+ "bodyPatterns": [
+ {
+ "equalToJson": "{\"milestone\":7,\"assignees\":[],\"title\":\"Issue A1 for sort test\",\"labels\":[]}",
+ "ignoreArrayOrder": true,
+ "ignoreExtraElements": false
+ }
+ ]
+ },
+ "response": {
+ "status": 201,
+ "bodyFileName": "9-r_h_g_issues.json",
+ "headers": {
+ "Date": "Thu, 25 Jun 2026 07:59: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",
+ "ETag": "\"6c301a8e95ebfef417f5c17c4c501c09e9e64f7886f607ac5d099cefb814e495\"",
+ "X-OAuth-Scopes": "admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, gist, notifications, project, repo, user, workflow, write:discussion",
+ "X-Accepted-OAuth-Scopes": "",
+ "X-GitHub-Media-Type": "github.v3; format=json",
+ "Deprecation": "Tue, 10 Mar 2026 00:00:00 GMT",
+ "Sunset": "Fri, 10 Mar 2028 00:00:00 GMT",
+ "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, Warning",
+ "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": "4896",
+ "X-RateLimit-Reset": "1782377714",
+ "X-RateLimit-Used": "104",
+ "X-RateLimit-Resource": "core",
+ "X-GitHub-Request-Id": "C188:11D81C:3BD4898:39D65DD:6A3CDFCC",
+ "Link": "; rel=\"deprecation\"; type=\"text/html\"",
+ "Location": "https://api.github.com/repos/hub4j-test-org/github-api/issues/488"
+ }
+ },
+ "uuid": "5c1619cb-e6e2-4e25-834f-fa9e2a018fd5",
+ "persistent": true,
+ "insertionIndex": 9
+}
\ No newline at end of file