Repository: hub4j/github-api
Pull request #2084 (2025-04-12 06:32:48)

Cleanup names and enforce naming conventions
# Description

<!-- Describe your change here -->

# Before submitting a PR:

- [ ] Changes must not break binary backwards compatibility. If you are unclear on how to make the change you think is needed while maintaining backward compatibility, [CONTRIBUTING.md](CONTRIBUTING.md) for details.
- [ ] Add JavaDocs and other comments explaining the behavior. 
- [ ] When adding or updating methods that fetch entities, add `@link` JavaDoc entries to the relevant documentation on https://docs.github.com/en/rest . 
- [ ] Add tests that cover any added or changed code. This generally requires capturing snapshot test data. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
- [ ] Run `mvn -D enable-ci clean install site "-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED"` locally. If this command doesn't succeed, your change will not pass CI.
- [ ] Push your changes to a branch other than `main`. You will create your PR from that branch.

# When creating a PR: 

- [ ] Fill in the "Description" above with clear summary of the changes. This includes:
  - [ ] If this PR fixes one or more issues, include "Fixes #<issue number>" lines for each issue. 
  - [ ] Provide links to relevant documentation on https://docs.github.com/en/rest where possible. If not including links, explain why not.
- [ ] All lines of new code should be covered by tests as reported by code coverage. Any lines that are not covered must have PR comments explaining why they cannot be covered. For example, "Reaching this particular exception is hard and is not a particular common scenario."
- [ ] Enable "Allow edits from maintainers".


codecov[bot]: ## [Codecov](https://app.codecov.io/gh/hub4j/github-api/pull/2084?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j) Report
Attention: Patch coverage is `75.93361%` with `58 lines` in your changes missing coverage. Please review.
> Project coverage is 84.37%. Comparing base [(`e0c4dae`)](https://app.codecov.io/gh/hub4j/github-api/commit/e0c4dae32fa1837f47bdfa090626e01675b26280?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j) to head [(`1a2d769`)](https://app.codecov.io/gh/hub4j/github-api/commit/1a2d769f3f076afb6df3d904e223d315680b5b14?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j).

| [Files with missing lines](https://app.codecov.io/gh/hub4j/github-api/pull/2084?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j) | Patch % | Lines |
|---|---|---|
| [src/main/java/org/kohsuke/github/GHRepository.java](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&filepath=src%2Fmain%2Fjava%2Forg%2Fkohsuke%2Fgithub%2FGHRepository.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j#diff-c3JjL21haW4vamF2YS9vcmcva29oc3VrZS9naXRodWIvR0hSZXBvc2l0b3J5LmphdmE=) | 72.41% | [8 Missing :warning: ](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j) |
| [.../org/kohsuke/github/GHPullRequestCommitDetail.java](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&filepath=src%2Fmain%2Fjava%2Forg%2Fkohsuke%2Fgithub%2FGHPullRequestCommitDetail.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j#diff-c3JjL21haW4vamF2YS9vcmcva29oc3VrZS9naXRodWIvR0hQdWxsUmVxdWVzdENvbW1pdERldGFpbC5qYXZh) | 0.00% | [6 Missing :warning: ](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j) |
| [src/main/java/org/kohsuke/github/GHIssue.java](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&filepath=src%2Fmain%2Fjava%2Forg%2Fkohsuke%2Fgithub%2FGHIssue.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j#diff-c3JjL21haW4vamF2YS9vcmcva29oc3VrZS9naXRodWIvR0hJc3N1ZS5qYXZh) | 55.55% | [4 Missing :warning: ](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j) |
| [src/main/java/org/kohsuke/github/GHProject.java](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&filepath=src%2Fmain%2Fjava%2Forg%2Fkohsuke%2Fgithub%2FGHProject.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j#diff-c3JjL21haW4vamF2YS9vcmcva29oc3VrZS9naXRodWIvR0hQcm9qZWN0LmphdmE=) | 20.00% | [4 Missing :warning: ](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j) |
| [...rc/main/java/org/kohsuke/github/GHProjectCard.java](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&filepath=src%2Fmain%2Fjava%2Forg%2Fkohsuke%2Fgithub%2FGHProjectCard.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j#diff-c3JjL21haW4vamF2YS9vcmcva29oc3VrZS9naXRodWIvR0hQcm9qZWN0Q2FyZC5qYXZh) | 20.00% | [2 Missing and 2 partials :warning: ](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j) |
| [...va/org/kohsuke/github/GHPullRequestFileDetail.java](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&filepath=src%2Fmain%2Fjava%2Forg%2Fkohsuke%2Fgithub%2FGHPullRequestFileDetail.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j#diff-c3JjL21haW4vamF2YS9vcmcva29oc3VrZS9naXRodWIvR0hQdWxsUmVxdWVzdEZpbGVEZXRhaWwuamF2YQ==) | 0.00% | [4 Missing :warning: ](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j) |
| [...ain/java/org/kohsuke/github/GHCheckRunBuilder.java](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&filepath=src%2Fmain%2Fjava%2Forg%2Fkohsuke%2Fgithub%2FGHCheckRunBuilder.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j#diff-c3JjL21haW4vamF2YS9vcmcva29oc3VrZS9naXRodWIvR0hDaGVja1J1bkJ1aWxkZXIuamF2YQ==) | 57.14% | [3 Missing :warning: ](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j) |
| [...org/kohsuke/github/GHPullRequestReviewComment.java](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&filepath=src%2Fmain%2Fjava%2Forg%2Fkohsuke%2Fgithub%2FGHPullRequestReviewComment.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j#diff-c3JjL21haW4vamF2YS9vcmcva29oc3VrZS9naXRodWIvR0hQdWxsUmVxdWVzdFJldmlld0NvbW1lbnQuamF2YQ==) | 85.71% | [2 Missing and 1 partial :warning: ](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j) |
| [src/main/java/org/kohsuke/github/GHContent.java](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&filepath=src%2Fmain%2Fjava%2Forg%2Fkohsuke%2Fgithub%2FGHContent.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j#diff-c3JjL21haW4vamF2YS9vcmcva29oc3VrZS9naXRodWIvR0hDb250ZW50LmphdmE=) | 50.00% | [2 Missing :warning: ](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j) |
| [src/main/java/org/kohsuke/github/GHDeployment.java](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&filepath=src%2Fmain%2Fjava%2Forg%2Fkohsuke%2Fgithub%2FGHDeployment.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j#diff-c3JjL21haW4vamF2YS9vcmcva29oc3VrZS9naXRodWIvR0hEZXBsb3ltZW50LmphdmE=) | 66.66% | [2 Missing :warning: ](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j) |
| ... and [16 more](https://app.codecov.io/gh/hub4j/github-api/pull/2084?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j) | |

<details><summary>Additional details and impacted files</summary>


```diff
@@             Coverage Diff              @@
##               main    #2084      +/-   ##
============================================
- Coverage     84.42%   84.37%   -0.05%     
- Complexity     2455     2457       +2     
============================================
  Files           237      237              
  Lines          7344     7348       +4     
  Branches        388      388              
============================================
  Hits           6200     6200              
- Misses          915      918       +3     
- Partials        229      230       +1     
```

</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/hub4j/github-api/pull/2084?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=hub4j).

<details><summary> :rocket: New features to boost your workflow: </summary>

- :snowflake: [Test Analytics](https://docs.codecov.com/docs/test-analytics): Detect flaky tests, report on failures, and find test suite problems.
</details>

Patch:
diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml
index 33f089f71..fa455bcce 100644
--- a/.github/workflows/maven-build.yml
+++ b/.github/workflows/maven-build.yml
@@ -35,7 +35,7 @@ jobs:
     - name: Maven Install (skipTests)
       env:
         MAVEN_OPTS: ${{ env.JAVA_11_PLUS_MAVEN_OPTS }}
-      run: mvn -B clean install -DskipTests --file pom.xml
+      run: mvn -B clean install -Djapicmp.skip=true -DskipTests --file pom.xml
     - uses: actions/upload-artifact@v4
       with:
         name: maven-target-directory
@@ -59,7 +59,7 @@ jobs:
         MAVEN_OPTS: ${{ env.JAVA_11_PLUS_MAVEN_OPTS }}
       # running install site seems to more closely imitate real site deployment,
       # more likely to prevent failed deployment
-      run: mvn -B clean install site -DskipTests --file pom.xml
+      run: mvn -B clean install site -Djapicmp.skip=true -DskipTests --file pom.xml
   test-bridged:
     name: build-and-test Bridged (Java 17)
     # Does not require build output, but orders execution to prevent launching test workflows when simple build fails 
@@ -78,7 +78,8 @@ jobs:
     - name: Maven Install (skipTests)
       env:
         MAVEN_OPTS: ${{ env.JAVA_11_PLUS_MAVEN_OPTS }}
-      run: mvn -B clean install -Pbridged -D enable-ci --file pom.xml "-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED"
+      #skipping japicmp check for bridged artifact until after next release
+      run: mvn -B clean install -Djapicmp.skip=true -Pbridged -D enable-ci --file pom.xml "-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED"
   test:
     name: test (${{ matrix.os }}, Java ${{ matrix.java }})
     # Does not require build output, but orders execution to prevent launching test workflows when simple build fails 
@@ -107,7 +108,8 @@ jobs:
       if: matrix.os != 'windows'
       env:
         MAVEN_OPTS: ${{ env.JAVA_11_PLUS_MAVEN_OPTS }}
-      run: mvn -B clean install -D enable-ci --file pom.xml "-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED"
+      # Disable japicmp until next release
+      run: mvn -B clean install -Djapicmp.skip=true -D enable-ci --file pom.xml "-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED"
     - name: Save coverage data
       if: matrix.os == 'ubuntu' && matrix.java == '17'
       uses: actions/upload-artifact@v4
diff --git a/.github/workflows/publish_release_branch.yml b/.github/workflows/publish_release_branch.yml
index 72e5c21a0..28134e332 100644
--- a/.github/workflows/publish_release_branch.yml
+++ b/.github/workflows/publish_release_branch.yml
@@ -23,7 +23,7 @@ jobs:
       - name: Maven Install and Site with Code Coverage
         env:
           MAVEN_OPTS: ${{ env.JAVA_11_PLUS_MAVEN_OPTS }}
-        run: mvn -B clean install site -D enable-ci --file pom.xml "-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED"
+        run: mvn -B clean install site -Djapicmp.skip=true -D enable-ci --file pom.xml "-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED"
 
       - uses: actions/upload-artifact@v4
         with:
@@ -49,7 +49,7 @@ jobs:
           gpg-passphrase: MAVEN_GPG_PASSPHRASE
 
       - name: Publish package
-        run: mvn -B clean deploy -DskipTests -Prelease
+        run: mvn -B clean deploy -Djapicmp.skip=true -DskipTests -Prelease
         env:
           MAVEN_OPTS: ${{ env.JAVA_11_PLUS_MAVEN_OPTS }}
           MAVEN_USERNAME: ${{ secrets.OSSRH_TOKEN_USERNAME }}
@@ -57,7 +57,7 @@ jobs:
           MAVEN_GPG_PASSPHRASE: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSPHRASE }}
 
       - name: Publish package with bridge methods 
-        run: mvn -B clean deploy -DskipTests -Prelease -Pbridged
+        run: mvn -B clean deploy -Djapicmp.skip=true -DskipTests -Prelease -Pbridged
         env:
           MAVEN_OPTS: ${{ env.JAVA_11_PLUS_MAVEN_OPTS }}
           MAVEN_USERNAME: ${{ secrets.OSSRH_TOKEN_USERNAME }}
diff --git a/src/main/java/org/kohsuke/github/GHAppInstallationToken.java b/src/main/java/org/kohsuke/github/GHAppInstallationToken.java
index 339d80cdd..fb214e235 100644
--- a/src/main/java/org/kohsuke/github/GHAppInstallationToken.java
+++ b/src/main/java/org/kohsuke/github/GHAppInstallationToken.java
@@ -23,7 +23,7 @@ public class GHAppInstallationToken extends GitHubInteractiveObject {
     private String token;
 
     /** The expires at. */
-    protected String expires_at;
+    protected String expiresAt;
     private Map<String, String> permissions;
     private List<GHRepository> repositories;
     private GHRepositorySelection repositorySelection;
@@ -71,6 +71,6 @@ public class GHAppInstallationToken extends GitHubInteractiveObject {
      */
     @WithBridgeMethods(value = Date.class, adapterMethod = "instantToDate")
     public Instant getExpiresAt() {
-        return GitHubClient.parseInstant(expires_at);
+        return GitHubClient.parseInstant(expiresAt);
     }
 }
diff --git a/src/main/java/org/kohsuke/github/GHAppInstallationsPage.java b/src/main/java/org/kohsuke/github/GHAppInstallationsPage.java
index 9a2983294..f4eeecc22 100644
--- a/src/main/java/org/kohsuke/github/GHAppInstallationsPage.java
+++ b/src/main/java/org/kohsuke/github/GHAppInstallationsPage.java
@@ -5,7 +5,7 @@ package org.kohsuke.github;
  * Represents the one page of GHAppInstallations.
  */
 class GHAppInstallationsPage {
-    private int total_count;
+    private int totalCount;
     private GHAppInstallation[] installations;
 
     /**
@@ -14,7 +14,7 @@ class GHAppInstallationsPage {
      * @return the total count
      */
     public int getTotalCount() {
-        return total_count;
+        return totalCount;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHArtifactsPage.java b/src/main/java/org/kohsuke/github/GHArtifactsPage.java
index 4ef587869..547eb3eeb 100644
--- a/src/main/java/org/kohsuke/github/GHArtifactsPage.java
+++ b/src/main/java/org/kohsuke/github/GHArtifactsPage.java
@@ -9,7 +9,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 @SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },
         justification = "JSON API")
 class GHArtifactsPage {
-    private int total_count;
+    private int totalCount;
     private GHArtifact[] artifacts;
 
     /**
@@ -18,7 +18,7 @@ class GHArtifactsPage {
      * @return the total count
      */
     public int getTotalCount() {
-        return total_count;
+        return totalCount;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHAsset.java b/src/main/java/org/kohsuke/github/GHAsset.java
index 3f9c8f420..b2c994f8e 100644
--- a/src/main/java/org/kohsuke/github/GHAsset.java
+++ b/src/main/java/org/kohsuke/github/GHAsset.java
@@ -23,10 +23,10 @@ public class GHAsset extends GHObject {
     private String name;
     private String label;
     private String state;
-    private String content_type;
+    private String contentType;
     private long size;
-    private long download_count;
-    private String browser_download_url;
+    private long downloadCount;
+    private String browserDownloadUrl;
 
     /**
      * Gets content type.
@@ -34,7 +34,7 @@ public class GHAsset extends GHObject {
      * @return the content type
      */
     public String getContentType() {
-        return content_type;
+        return contentType;
     }
 
     /**
@@ -47,7 +47,7 @@ public class GHAsset extends GHObject {
      */
     public void setContentType(String contentType) throws IOException {
         edit("content_type", contentType);
-        this.content_type = contentType;
+        this.contentType = contentType;
     }
 
     /**
@@ -56,7 +56,7 @@ public class GHAsset extends GHObject {
      * @return the download count
      */
     public long getDownloadCount() {
-        return download_count;
+        return downloadCount;
     }
 
     /**
@@ -124,7 +124,7 @@ public class GHAsset extends GHObject {
      * @return the browser download url
      */
     public String getBrowserDownloadUrl() {
-        return browser_download_url;
+        return browserDownloadUrl;
     }
 
     private void edit(String key, Object value) throws IOException {
diff --git a/src/main/java/org/kohsuke/github/GHAuthorization.java b/src/main/java/org/kohsuke/github/GHAuthorization.java
index 1dd22edbe..4a88b20d7 100644
--- a/src/main/java/org/kohsuke/github/GHAuthorization.java
+++ b/src/main/java/org/kohsuke/github/GHAuthorization.java
@@ -79,11 +79,11 @@ public class GHAuthorization extends GHObject {
 
     private List<String> scopes;
     private String token;
-    private String token_last_eight;
-    private String hashed_token;
+    private String tokenLastEight;
+    private String hashedToken;
     private App app;
     private String note;
-    private String note_url;
+    private String noteUrl;
     private String fingerprint;
     // TODO add some user class for https://developer.github.com/v3/oauth_authorizations/#check-an-authorization ?
     // private GHUser user;
@@ -112,7 +112,7 @@ public class GHAuthorization extends GHObject {
      * @return the token last eight
      */
     public String getTokenLastEight() {
-        return token_last_eight;
+        return tokenLastEight;
     }
 
     /**
@@ -121,7 +121,7 @@ public class GHAuthorization extends GHObject {
      * @return the hashed token
      */
     public String getHashedToken() {
-        return hashed_token;
+        return hashedToken;
     }
 
     /**
@@ -157,7 +157,7 @@ public class GHAuthorization extends GHObject {
      * @return the note url
      */
     public URL getNoteUrl() {
-        return GitHubClient.parseURL(note_url);
+        return GitHubClient.parseURL(noteUrl);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHAutolink.java b/src/main/java/org/kohsuke/github/GHAutolink.java
index 841f1d0f6..7165e8d0a 100644
--- a/src/main/java/org/kohsuke/github/GHAutolink.java
+++ b/src/main/java/org/kohsuke/github/GHAutolink.java
@@ -15,9 +15,9 @@ import java.io.IOException;
 public class GHAutolink {
 
     private int id;
-    private String key_prefix;
-    private String url_template;
-    private boolean is_alphanumeric;
+    private String keyPrefix;
+    private String urlTemplate;
+    private boolean isAlphanumeric;
     private GHRepository owner;
 
     /**
@@ -41,7 +41,7 @@ public class GHAutolink {
      * @return the key prefix string
      */
     public String getKeyPrefix() {
-        return key_prefix;
+        return keyPrefix;
     }
 
     /**
@@ -50,7 +50,7 @@ public class GHAutolink {
      * @return the URL template string
      */
     public String getUrlTemplate() {
-        return url_template;
+        return urlTemplate;
     }
 
     /**
@@ -59,7 +59,7 @@ public class GHAutolink {
      * @return true if alphanumeric, false otherwise
      */
     public boolean isAlphanumeric() {
-        return is_alphanumeric;
+        return isAlphanumeric;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHBranch.java b/src/main/java/org/kohsuke/github/GHBranch.java
index 99335c122..08dcb49ad 100644
--- a/src/main/java/org/kohsuke/github/GHBranch.java
+++ b/src/main/java/org/kohsuke/github/GHBranch.java
@@ -27,7 +27,7 @@ public class GHBranch extends GitHubInteractiveObject {
     private Commit commit;
     @JsonProperty("protected")
     private boolean protection;
-    private String protection_url;
+    private String protectionUrl;
 
     /**
      * Instantiates a new GH branch.
@@ -94,7 +94,7 @@ public class GHBranch extends GitHubInteractiveObject {
      * @return API URL that deals with the protection of this branch.
      */
     public URL getProtectionUrl() {
-        return GitHubClient.parseURL(protection_url);
+        return GitHubClient.parseURL(protectionUrl);
     }
 
     /**
@@ -105,7 +105,7 @@ public class GHBranch extends GitHubInteractiveObject {
      *             the io exception
      */
     public GHBranchProtection getProtection() throws IOException {
-        return root().createRequest().setRawUrlPath(protection_url).fetch(GHBranchProtection.class);
+        return root().createRequest().setRawUrlPath(protectionUrl).fetch(GHBranchProtection.class);
     }
 
     /**
@@ -124,7 +124,7 @@ public class GHBranch extends GitHubInteractiveObject {
      *             if disabling protection fails
      */
     public void disableProtection() throws IOException {
-        root().createRequest().method("DELETE").setRawUrlPath(protection_url).send();
+        root().createRequest().method("DELETE").setRawUrlPath(protectionUrl).send();
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHCheckRunBuilder.java b/src/main/java/org/kohsuke/github/GHCheckRunBuilder.java
index 2165b3e26..fb996239e 100644
--- a/src/main/java/org/kohsuke/github/GHCheckRunBuilder.java
+++ b/src/main/java/org/kohsuke/github/GHCheckRunBuilder.java
@@ -363,14 +363,14 @@ public final class GHCheckRunBuilder {
     public static final class Annotation {
 
         private final String path;
-        private final int start_line;
-        private final int end_line;
-        private final String annotation_level;
+        private final int startLine;
+        private final int endLine;
+        private final String annotationLevel;
         private final String message;
-        private Integer start_column;
-        private Integer end_column;
+        private Integer startColumn;
+        private Integer endColumn;
         private String title;
-        private String raw_details;
+        private String rawDetails;
 
         /**
          * Instantiates a new annotation.
@@ -411,9 +411,9 @@ public final class GHCheckRunBuilder {
                 @NonNull GHCheckRun.AnnotationLevel annotationLevel,
                 @NonNull String message) {
             this.path = path;
-            start_line = startLine;
-            end_line = endLine;
-            annotation_level = annotationLevel.toString().toLowerCase(Locale.ROOT);
+            this.startLine = startLine;
+            this.endLine = endLine;
+            this.annotationLevel = annotationLevel.toString().toLowerCase(Locale.ROOT);
             this.message = message;
         }
 
@@ -425,7 +425,7 @@ public final class GHCheckRunBuilder {
          * @return the annotation
          */
         public @NonNull Annotation withStartColumn(@CheckForNull Integer startColumn) {
-            start_column = startColumn;
+            this.startColumn = startColumn;
             return this;
         }
 
@@ -437,7 +437,7 @@ public final class GHCheckRunBuilder {
          * @return the annotation
          */
         public @NonNull Annotation withEndColumn(@CheckForNull Integer endColumn) {
-            end_column = endColumn;
+            this.endColumn = endColumn;
             return this;
         }
 
@@ -461,7 +461,7 @@ public final class GHCheckRunBuilder {
          * @return the annotation
          */
         public @NonNull Annotation withRawDetails(@CheckForNull String rawDetails) {
-            raw_details = rawDetails;
+            this.rawDetails = rawDetails;
             return this;
         }
 
@@ -476,7 +476,7 @@ public final class GHCheckRunBuilder {
     public static final class Image {
 
         private final String alt;
-        private final String image_url;
+        private final String imageUrl;
         private String caption;
 
         /**
@@ -489,7 +489,7 @@ public final class GHCheckRunBuilder {
          */
         public Image(@NonNull String alt, @NonNull String imageURL) {
             this.alt = alt;
-            image_url = imageURL;
+            this.imageUrl = imageURL;
         }
 
         /**
diff --git a/src/main/java/org/kohsuke/github/GHCheckRunsPage.java b/src/main/java/org/kohsuke/github/GHCheckRunsPage.java
index 2caf0a711..911a6be48 100644
--- a/src/main/java/org/kohsuke/github/GHCheckRunsPage.java
+++ b/src/main/java/org/kohsuke/github/GHCheckRunsPage.java
@@ -9,8 +9,8 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 @SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },
         justification = "JSON API")
 class GHCheckRunsPage {
-    private int total_count;
-    private GHCheckRun[] check_runs;
+    private int totalCount;
+    private GHCheckRun[] checkRuns;
 
     /**
      * Gets the total count.
@@ -18,7 +18,7 @@ class GHCheckRunsPage {
      * @return the total count
      */
     public int getTotalCount() {
-        return total_count;
+        return totalCount;
     }
 
     /**
@@ -29,9 +29,9 @@ class GHCheckRunsPage {
      * @return the check runs
      */
     GHCheckRun[] getCheckRuns(GHRepository owner) {
-        for (GHCheckRun check_run : check_runs) {
-            check_run.wrap(owner);
+        for (GHCheckRun checkRun : checkRuns) {
+            checkRun.wrap(owner);
         }
-        return check_runs;
+        return checkRuns;
     }
 }
diff --git a/src/main/java/org/kohsuke/github/GHCommentAuthorAssociation.java b/src/main/java/org/kohsuke/github/GHCommentAuthorAssociation.java
index b00905ab8..011016f50 100644
--- a/src/main/java/org/kohsuke/github/GHCommentAuthorAssociation.java
+++ b/src/main/java/org/kohsuke/github/GHCommentAuthorAssociation.java
@@ -38,5 +38,9 @@ public enum GHCommentAuthorAssociation {
     /**
      * Author is the owner of the repository.
      */
-    OWNER
+    OWNER,
+    /**
+     * Author association is not recognized.
+     */
+    UNKNOWN
 }
diff --git a/src/main/java/org/kohsuke/github/GHCommit.java b/src/main/java/org/kohsuke/github/GHCommit.java
index e3d6582f7..52ad989ee 100644
--- a/src/main/java/org/kohsuke/github/GHCommit.java
+++ b/src/main/java/org/kohsuke/github/GHCommit.java
@@ -36,7 +36,7 @@ public class GHCommit {
             justification = "JSON API")
     public static class ShortInfo extends GitCommit {
 
-        private int comment_count = -1;
+        private int commentCount = -1;
 
         /**
          * Gets comment count.
@@ -46,10 +46,10 @@ public class GHCommit {
          *             the GH exception
          */
         public int getCommentCount() throws GHException {
-            if (comment_count < 0) {
+            if (commentCount < 0) {
                 throw new GHException("Not available on this endpoint.");
             }
-            return comment_count;
+            return commentCount;
         }
 
         /**
@@ -121,10 +121,10 @@ public class GHCommit {
         int changes, additions, deletions;
 
         /** The patch. */
-        String raw_url, blob_url, sha, patch;
+        String rawUrl, blobUrl, sha, patch;
 
         /** The previous filename. */
-        String filename, previous_filename;
+        String filename, previousFilename;
 
         /**
          * Gets lines changed.
@@ -179,7 +179,7 @@ public class GHCommit {
          * @return Previous path, in case file has moved.
          */
         public String getPreviousFilename() {
-            return previous_filename;
+            return previousFilename;
         }
 
         /**
@@ -199,7 +199,7 @@ public class GHCommit {
          *         resolves to the actual content of the file.
          */
         public URL getRawUrl() {
-            return GitHubClient.parseURL(raw_url);
+            return GitHubClient.parseURL(rawUrl);
         }
 
         /**
@@ -210,7 +210,7 @@ public class GHCommit {
          *         that resolves to the HTML page that describes this file.
          */
         public URL getBlobUrl() {
-            return GitHubClient.parseURL(blob_url);
+            return GitHubClient.parseURL(blobUrl);
         }
 
         /**
@@ -250,7 +250,7 @@ public class GHCommit {
         /** The gravatar id. */
         // TODO: what if someone who doesn't have an account on GitHub makes a commit?
         @SuppressFBWarnings(value = "UUF_UNUSED_FIELD", justification = "We don't provide it in API now")
-        String url, avatar_url, gravatar_id;
+        String url, avatarUrl, gravatarId;
 
         /** The id. */
         @SuppressFBWarnings(value = "UUF_UNUSED_FIELD", justification = "We don't provide it in API now")
@@ -261,7 +261,7 @@ public class GHCommit {
     }
 
     /** The sha. */
-    String url, html_url, sha, message;
+    String url, htmlUrl, sha, message;
 
     /** The files. */
     List<File> files;
@@ -296,7 +296,7 @@ public class GHCommit {
         commit = shortInfo;
 
         owner = commit.getOwner();
-        html_url = commit.getHtmlUrl();
+        htmlUrl = commit.getHtmlUrl();
         sha = commit.getSha();
         url = commit.getUrl();
         parents = commit.getParents();
@@ -380,7 +380,7 @@ public class GHCommit {
      *         "https://github.com/kohsuke/sandbox-ant/commit/8ae38db0ea5837313ab5f39d43a6f73de3bd9000"
      */
     public URL getHtmlUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHCommitComment.java b/src/main/java/org/kohsuke/github/GHCommitComment.java
index 40427b41e..76bbdfa0d 100644
--- a/src/main/java/org/kohsuke/github/GHCommitComment.java
+++ b/src/main/java/org/kohsuke/github/GHCommitComment.java
@@ -28,7 +28,7 @@ public class GHCommitComment extends GHObject implements Reactable {
     private GHRepository owner;
 
     /** The commit id. */
-    String body, html_url, commit_id;
+    String body, htmlUrl, commitId;
 
     /** The line. */
     Integer line;
@@ -57,7 +57,7 @@ public class GHCommitComment extends GHObject implements Reactable {
      * @return the html url
      */
     public URL getHtmlUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
@@ -66,7 +66,7 @@ public class GHCommitComment extends GHObject implements Reactable {
      * @return the sha 1
      */
     public String getSHA1() {
-        return commit_id;
+        return commitId;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHCommitStatus.java b/src/main/java/org/kohsuke/github/GHCommitStatus.java
index 880b10191..04aaca2fd 100644
--- a/src/main/java/org/kohsuke/github/GHCommitStatus.java
+++ b/src/main/java/org/kohsuke/github/GHCommitStatus.java
@@ -22,7 +22,7 @@ public class GHCommitStatus extends GHObject {
     String state;
 
     /** The description. */
-    String target_url, description;
+    String targetUrl, description;
 
     /** The context. */
     String context;
@@ -51,7 +51,7 @@ public class GHCommitStatus extends GHObject {
      * @return the target url
      */
     public String getTargetUrl() {
-        return target_url;
+        return targetUrl;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHCompare.java b/src/main/java/org/kohsuke/github/GHCompare.java
index cba09389a..53ffadac9 100644
--- a/src/main/java/org/kohsuke/github/GHCompare.java
+++ b/src/main/java/org/kohsuke/github/GHCompare.java
@@ -24,10 +24,10 @@ public class GHCompare {
     public GHCompare() {
     }
 
-    private String url, html_url, permalink_url, diff_url, patch_url;
+    private String url, htmlUrl, permalinkUrl, diffUrl, patchUrl;
     private Status status;
-    private int ahead_by, behind_by, total_commits;
-    private Commit base_commit, merge_base_commit;
+    private int aheadBy, behindBy, totalCommits;
+    private Commit baseCommit, mergeBaseCommit;
     private Commit[] commits;
     private GHCommit.File[] files;
 
@@ -51,7 +51,7 @@ public class GHCompare {
      * @return the html url
      */
     public URL getHtmlUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
@@ -60,7 +60,7 @@ public class GHCompare {
      * @return the permalink url
      */
     public URL getPermalinkUrl() {
-        return GitHubClient.parseURL(permalink_url);
+        return GitHubClient.parseURL(permalinkUrl);
     }
 
     /**
@@ -69,7 +69,7 @@ public class GHCompare {
      * @return the diff url
      */
     public URL getDiffUrl() {
-        return GitHubClient.parseURL(diff_url);
+        return GitHubClient.parseURL(diffUrl);
     }
 
     /**
@@ -78,7 +78,7 @@ public class GHCompare {
      * @return the patch url
      */
     public URL getPatchUrl() {
-        return GitHubClient.parseURL(patch_url);
+        return GitHubClient.parseURL(patchUrl);
     }
 
     /**
@@ -96,7 +96,7 @@ public class GHCompare {
      * @return the ahead by
      */
     public int getAheadBy() {
-        return ahead_by;
+        return aheadBy;
     }
 
     /**
@@ -105,7 +105,7 @@ public class GHCompare {
      * @return the behind by
      */
     public int getBehindBy() {
-        return behind_by;
+        return behindBy;
     }
 
     /**
@@ -114,7 +114,7 @@ public class GHCompare {
      * @return the total commits
      */
     public int getTotalCommits() {
-        return total_commits;
+        return totalCommits;
     }
 
     /**
@@ -124,7 +124,7 @@ public class GHCompare {
      */
     @SuppressFBWarnings(value = { "EI_EXPOSE_REP" }, justification = "Expected behavior")
     public Commit getBaseCommit() {
-        return base_commit;
+        return baseCommit;
     }
 
     /**
@@ -134,7 +134,7 @@ public class GHCompare {
      */
     @SuppressFBWarnings(value = { "EI_EXPOSE_REP" }, justification = "Expected behavior")
     public Commit getMergeBaseCommit() {
-        return merge_base_commit;
+        return mergeBaseCommit;
     }
 
     /**
@@ -215,8 +215,8 @@ public class GHCompare {
         for (Commit commit : commits) {
             commit.wrapUp(owner);
         }
-        merge_base_commit.wrapUp(owner);
-        base_commit.wrapUp(owner);
+        mergeBaseCommit.wrapUp(owner);
+        baseCommit.wrapUp(owner);
         return this;
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHContent.java b/src/main/java/org/kohsuke/github/GHContent.java
index b25a78650..75e59c11c 100644
--- a/src/main/java/org/kohsuke/github/GHContent.java
+++ b/src/main/java/org/kohsuke/github/GHContent.java
@@ -39,9 +39,9 @@ public class GHContent extends GitHubInteractiveObject implements Refreshable {
     private String target;
     private String content;
     private String url; // this is the API url
-    private String git_url; // this is the Blob url
-    private String html_url; // this is the UI
-    private String download_url;
+    private String gitUrl; // this is the Blob url
+    private String htmlUrl; // this is the UI
+    private String downloadUrl;
 
     /**
      * Gets owner.
@@ -167,7 +167,7 @@ public class GHContent extends GitHubInteractiveObject implements Refreshable {
      * @return the git url
      */
     public String getGitUrl() {
-        return git_url;
+        return gitUrl;
     }
 
     /**
@@ -176,7 +176,7 @@ public class GHContent extends GitHubInteractiveObject implements Refreshable {
      * @return the html url
      */
     public String getHtmlUrl() {
-        return html_url;
+        return htmlUrl;
     }
 
     /**
@@ -219,8 +219,8 @@ public class GHContent extends GitHubInteractiveObject implements Refreshable {
      *             the io exception
      */
     public String getDownloadUrl() throws IOException {
-        refresh(download_url);
-        return download_url;
+        refresh(downloadUrl);
+        return downloadUrl;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHDeployKey.java b/src/main/java/org/kohsuke/github/GHDeployKey.java
index 7cd64c8e0..07ee6279a 100644
--- a/src/main/java/org/kohsuke/github/GHDeployKey.java
+++ b/src/main/java/org/kohsuke/github/GHDeployKey.java
@@ -30,16 +30,16 @@ public class GHDeployKey {
     private GHRepository owner;
 
     /** Creation date of the deploy key */
-    private String created_at;
+    private String createdAt;
 
     /** Last used date of the deploy key */
-    private String last_used;
+    private String lastUsed;
 
     /** Name of user that added the deploy key */
-    private String added_by;
+    private String addedBy;
 
     /** Whether the deploykey has readonly permission or full access */
-    private boolean read_only;
+    private boolean readOnly;
 
     /**
      * Gets id.
@@ -87,13 +87,13 @@ public class GHDeployKey {
     }
 
     /**
-     * Gets created_at.
+     * Gets createdAt.
      *
-     * @return the created_at
+     * @return the createdAt
      */
     @WithBridgeMethods(value = Date.class, adapterMethod = "instantToDate")
     public Instant getCreatedAt() {
-        return GitHubClient.parseInstant(created_at);
+        return GitHubClient.parseInstant(createdAt);
     }
 
     /**
@@ -103,25 +103,47 @@ public class GHDeployKey {
      */
     @WithBridgeMethods(value = Date.class, adapterMethod = "instantToDate")
     public Instant getLastUsedAt() {
-        return GitHubClient.parseInstant(last_used);
+        return GitHubClient.parseInstant(lastUsed);
     }
 
     /**
      * Gets added_by
      *
      * @return the added_by
+     * @deprecated Use {@link #getAddedBy()}
      */
+    @Deprecated
     public String getAdded_by() {
-        return added_by;
+        return getAddedBy();
+    }
+
+    /**
+     * Gets added_by
+     *
+     * @return the added_by
+     */
+    public String getAddedBy() {
+        return addedBy;
     }
 
     /**
      * Is read_only
      *
      * @return true if the key can only read. False if the key has write permission as well.
+     * @deprecated {@link #isReadOnly()}
      */
+    @Deprecated
     public boolean isRead_only() {
-        return read_only;
+        return isReadOnly();
+    }
+
+    /**
+     * Is read_only
+     *
+     * @return true if the key can only read. False if the key has write permission as well.
+     */
+    public boolean isReadOnly() {
+        return readOnly;
     }
 
     /**
@@ -145,10 +167,10 @@ public class GHDeployKey {
         return new ToStringBuilder(this).append("title", title)
                 .append("id", id)
                 .append("key", key)
-                .append("created_at", created_at)
-                .append("last_used", last_used)
-                .append("added_by", added_by)
-                .append("read_only", read_only)
+                .append("created_at", createdAt)
+                .append("last_used", lastUsed)
+                .append("added_by", addedBy)
+                .append("read_only", readOnly)
                 .toString();
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHDeployment.java b/src/main/java/org/kohsuke/github/GHDeployment.java
index d441fd5a7..a075c7563 100644
--- a/src/main/java/org/kohsuke/github/GHDeployment.java
+++ b/src/main/java/org/kohsuke/github/GHDeployment.java
@@ -42,22 +42,22 @@ public class GHDeployment extends GHObject {
     protected String description;
 
     /** The statuses url. */
-    protected String statuses_url;
+    protected String statusesUrl;
 
     /** The repository url. */
-    protected String repository_url;
+    protected String repositoryUrl;
 
     /** The creator. */
     protected GHUser creator;
 
     /** The original environment. */
-    protected String original_environment;
+    protected String originalEnvironment;
 
     /** The transient environment. */
-    protected boolean transient_environment;
+    protected boolean transientEnvironment;
 
     /** The production environment. */
-    protected boolean production_environment;
+    protected boolean productionEnvironment;
 
     /**
      * Wrap.
@@ -77,7 +77,7 @@ public class GHDeployment extends GHObject {
      * @return the statuses url
      */
     public URL getStatusesUrl() {
-        return GitHubClient.parseURL(statuses_url);
+        return GitHubClient.parseURL(statusesUrl);
     }
 
     /**
@@ -86,7 +86,7 @@ public class GHDeployment extends GHObject {
      * @return the repository url
      */
     public URL getRepositoryUrl() {
-        return GitHubClient.parseURL(repository_url);
+        return GitHubClient.parseURL(repositoryUrl);
     }
 
     /**
@@ -133,7 +133,7 @@ public class GHDeployment extends GHObject {
      * @return the original deployment environment
      */
     public String getOriginalEnvironment() {
-        return original_environment;
+        return originalEnvironment;
     }
 
     /**
@@ -152,7 +152,7 @@ public class GHDeployment extends GHObject {
      * @return the environment is transient
      */
     public boolean isTransientEnvironment() {
-        return transient_environment;
+        return transientEnvironment;
     }
 
     /**
@@ -161,7 +161,7 @@ public class GHDeployment extends GHObject {
      * @return the environment is used by end-users directly
      */
     public boolean isProductionEnvironment() {
-        return production_environment;
+        return productionEnvironment;
     }
 
     /**
@@ -209,7 +209,7 @@ public class GHDeployment extends GHObject {
      */
     public PagedIterable<GHDeploymentStatus> listStatuses() {
         return root().createRequest()
-                .withUrlPath(statuses_url)
+                .withUrlPath(statusesUrl)
                 .toIterable(GHDeploymentStatus[].class, item -> item.lateBind(owner));
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHDeploymentStatus.java b/src/main/java/org/kohsuke/github/GHDeploymentStatus.java
index f48cd089f..9362da4af 100644
--- a/src/main/java/org/kohsuke/github/GHDeploymentStatus.java
+++ b/src/main/java/org/kohsuke/github/GHDeploymentStatus.java
@@ -27,19 +27,19 @@ public class GHDeploymentStatus extends GHObject {
     protected String description;
 
     /** The target url. */
-    protected String target_url;
+    protected String targetUrl;
 
     /** The log url. */
-    protected String log_url;
+    protected String logUrl;
 
     /** The deployment url. */
-    protected String deployment_url;
+    protected String deploymentUrl;
 
     /** The repository url. */
-    protected String repository_url;
+    protected String repositoryUrl;
 
     /** The environment url. */
-    protected String environment_url;
+    protected String environmentUrl;
 
     /**
      * Wrap gh deployment status.
@@ -60,7 +60,7 @@ public class GHDeploymentStatus extends GHObject {
      * @return the target url
      */
     public URL getLogUrl() {
-        return GitHubClient.parseURL(log_url);
+        return GitHubClient.parseURL(logUrl);
     }
 
     /**
@@ -69,7 +69,7 @@ public class GHDeploymentStatus extends GHObject {
      * @return the deployment url
      */
     public URL getDeploymentUrl() {
-        return GitHubClient.parseURL(deployment_url);
+        return GitHubClient.parseURL(deploymentUrl);
     }
 
     /**
@@ -78,7 +78,7 @@ public class GHDeploymentStatus extends GHObject {
      * @return the deployment environment url
      */
     public URL getEnvironmentUrl() {
-        return GitHubClient.parseURL(environment_url);
+        return GitHubClient.parseURL(environmentUrl);
     }
 
     /**
@@ -87,7 +87,7 @@ public class GHDeploymentStatus extends GHObject {
      * @return the repository url
      */
     public URL getRepositoryUrl() {
-        return GitHubClient.parseURL(repository_url);
+        return GitHubClient.parseURL(repositoryUrl);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHEventInfo.java b/src/main/java/org/kohsuke/github/GHEventInfo.java
index 8238f04a0..d2448dfee 100644
--- a/src/main/java/org/kohsuke/github/GHEventInfo.java
+++ b/src/main/java/org/kohsuke/github/GHEventInfo.java
@@ -27,7 +27,7 @@ public class GHEventInfo extends GitHubInteractiveObject {
     private ObjectNode payload;
 
     private long id;
-    private String created_at;
+    private String createdAt;
 
     /**
      * Representation of GitHub Event API Event Type.
@@ -132,7 +132,7 @@ public class GHEventInfo extends GitHubInteractiveObject {
      */
     @WithBridgeMethods(value = Date.class, adapterMethod = "instantToDate")
     public Instant getCreatedAt() {
-        return GitHubClient.parseInstant(created_at);
+        return GitHubClient.parseInstant(createdAt);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHGist.java b/src/main/java/org/kohsuke/github/GHGist.java
index 1103dd32d..60106dc5b 100644
--- a/src/main/java/org/kohsuke/github/GHGist.java
+++ b/src/main/java/org/kohsuke/github/GHGist.java
@@ -26,16 +26,16 @@ public class GHGist extends GHObject {
     /** The owner. */
     final GHUser owner;
 
-    private String forks_url, commits_url, id, git_pull_url, git_push_url, html_url;
+    private String forksUrl, commitsUrl, id, gitPullUrl, gitPushUrl, htmlUrl;
 
     @JsonProperty("public")
-    private boolean _public;
+    private boolean isPublic;
 
     private String description;
 
     private int comments;
 
-    private String comments_url;
+    private String commentsUrl;
 
     private final Map<String, GHGistFile> files;
 
@@ -88,7 +88,7 @@ public class GHGist extends GHObject {
      * @return the forks url
      */
     public String getForksUrl() {
-        return forks_url;
+        return forksUrl;
     }
 
     /**
@@ -97,7 +97,7 @@ public class GHGist extends GHObject {
      * @return the commits url
      */
     public String getCommitsUrl() {
-        return commits_url;
+        return commitsUrl;
     }
 
     /**
@@ -106,7 +106,7 @@ public class GHGist extends GHObject {
      * @return URL like https://gist.github.com/gists/12345.git
      */
     public String getGitPullUrl() {
-        return git_pull_url;
+        return gitPullUrl;
     }
 
     /**
@@ -115,7 +115,7 @@ public class GHGist extends GHObject {
      * @return the git push url
      */
     public String getGitPushUrl() {
-        return git_push_url;
+        return gitPushUrl;
     }
 
     /**
@@ -124,7 +124,7 @@ public class GHGist extends GHObject {
      * @return the github html url
      */
     public URL getHtmlUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
@@ -133,7 +133,7 @@ public class GHGist extends GHObject {
      * @return the boolean
      */
     public boolean isPublic() {
-        return _public;
+        return isPublic;
     }
 
     /**
@@ -160,7 +160,7 @@ public class GHGist extends GHObject {
      * @return API URL of listing comments.
      */
     public String getCommentsUrl() {
-        return comments_url;
+        return commentsUrl;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHGistFile.java b/src/main/java/org/kohsuke/github/GHGistFile.java
index 8a4b8f48e..50b50973d 100644
--- a/src/main/java/org/kohsuke/github/GHGistFile.java
+++ b/src/main/java/org/kohsuke/github/GHGistFile.java
@@ -20,7 +20,7 @@ public class GHGistFile {
     /* package almost final */ String fileName;
 
     private int size;
-    private String raw_url, type, language, content;
+    private String rawUrl, type, language, content;
     private boolean truncated;
 
     /**
@@ -47,7 +47,7 @@ public class GHGistFile {
      * @return the raw url
      */
     public String getRawUrl() {
-        return raw_url;
+        return rawUrl;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHInvitation.java b/src/main/java/org/kohsuke/github/GHInvitation.java
index a625597b7..c9cfff8d9 100644
--- a/src/main/java/org/kohsuke/github/GHInvitation.java
+++ b/src/main/java/org/kohsuke/github/GHInvitation.java
@@ -28,7 +28,7 @@ public class GHInvitation extends GHObject {
     private GHRepository repository;
     private GHUser invitee, inviter;
     private String permissions;
-    private String html_url;
+    private String htmlUrl;
 
     /**
      * Accept a repository invitation.
@@ -56,6 +56,6 @@ public class GHInvitation extends GHObject {
      * @return the html url
      */
     public URL getHtmlUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 }
diff --git a/src/main/java/org/kohsuke/github/GHIssue.java b/src/main/java/org/kohsuke/github/GHIssue.java
index 668a74b4d..c8db830ff 100644
--- a/src/main/java/org/kohsuke/github/GHIssue.java
+++ b/src/main/java/org/kohsuke/github/GHIssue.java
@@ -77,13 +77,13 @@ public class GHIssue extends GHObject implements Reactable {
     protected String state;
 
     /** The state reason. */
-    protected String state_reason;
+    protected String stateReason;
 
     /** The number. */
     protected int number;
 
     /** The closed at. */
-    protected String closed_at;
+    protected String closedAt;
 
     /** The comments. */
     protected int comments;
@@ -99,16 +99,16 @@ public class GHIssue extends GHObject implements Reactable {
     protected GHUser user;
 
     /** The html url. */
-    protected String title, html_url;
+    protected String title, htmlUrl;
 
     /** The pull request. */
-    protected GHIssue.PullRequest pull_request;
+    protected GHIssue.PullRequest pullRequest;
 
     /** The milestone. */
     protected GHMilestone milestone;
 
     /** The closed by. */
-    protected GHUser closed_by;
+    protected GHUser closedBy;
 
     /** The locked. */
     protected boolean locked;
@@ -180,7 +180,7 @@ public class GHIssue extends GHObject implements Reactable {
      * @return the html url
      */
     public URL getHtmlUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
@@ -216,7 +216,7 @@ public class GHIssue extends GHObject implements Reactable {
      * @return the state reason
      */
     public GHIssueStateReason getStateReason() {
-        return EnumUtils.getNullableEnumOrDefault(GHIssueStateReason.class, state_reason, GHIssueStateReason.UNKNOWN);
+        return EnumUtils.getNullableEnumOrDefault(GHIssueStateReason.class, stateReason, GHIssueStateReason.UNKNOWN);
     }
 
     /**
@@ -238,7 +238,7 @@ public class GHIssue extends GHObject implements Reactable {
      */
     @WithBridgeMethods(value = Date.class, adapterMethod = "instantToDate")
     public Instant getClosedAt() {
-        return GitHubClient.parseInstant(closed_at);
+        return GitHubClient.parseInstant(closedAt);
     }
 
     /**
@@ -758,7 +758,7 @@ public class GHIssue extends GHObject implements Reactable {
         /*
          * if (closed_by==null) { closed_by = owner.getIssue(number).getClosed_by(); }
          */
-        return root().intern(closed_by);
+        return root().intern(closedBy);
     }
 
     /**
@@ -776,7 +776,7 @@ public class GHIssue extends GHObject implements Reactable {
      * @return the pull request
      */
     public PullRequest getPullRequest() {
-        return pull_request;
+        return pullRequest;
     }
 
     /**
@@ -785,7 +785,7 @@ public class GHIssue extends GHObject implements Reactable {
      * @return the boolean
      */
     public boolean isPullRequest() {
-        return pull_request != null;
+        return pullRequest != null;
     }
 
     /**
@@ -810,7 +810,7 @@ public class GHIssue extends GHObject implements Reactable {
         public PullRequest() {
         }
 
-        private String diff_url, patch_url, html_url;
+        private String diffUrl, patchUrl, htmlUrl;
 
         /**
          * Gets diff url.
@@ -818,7 +818,7 @@ public class GHIssue extends GHObject implements Reactable {
          * @return the diff url
          */
         public URL getDiffUrl() {
-            return GitHubClient.parseURL(diff_url);
+            return GitHubClient.parseURL(diffUrl);
         }
 
         /**
@@ -827,7 +827,7 @@ public class GHIssue extends GHObject implements Reactable {
          * @return the patch url
          */
         public URL getPatchUrl() {
-            return GitHubClient.parseURL(patch_url);
+            return GitHubClient.parseURL(patchUrl);
         }
 
         /**
@@ -836,7 +836,7 @@ public class GHIssue extends GHObject implements Reactable {
          * @return the url
          */
         public URL getUrl() {
-            return GitHubClient.parseURL(html_url);
+            return GitHubClient.parseURL(htmlUrl);
         }
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHIssueComment.java b/src/main/java/org/kohsuke/github/GHIssueComment.java
index 2c6d8f956..2e70403e8 100644
--- a/src/main/java/org/kohsuke/github/GHIssueComment.java
+++ b/src/main/java/org/kohsuke/github/GHIssueComment.java
@@ -24,6 +24,7 @@
 package org.kohsuke.github;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import org.kohsuke.github.internal.EnumUtils;
 
 import java.io.IOException;
 import java.net.URL;
@@ -47,7 +48,7 @@ public class GHIssueComment extends GHObject implements Reactable {
     /** The owner. */
     GHIssue owner;
 
-    private String body, gravatar_id, html_url, author_association;
+    private String body, gravatarId, htmlUrl, authorAssociation;
     private GHUser user; // not fully populated. beware.
 
     /**
@@ -98,7 +99,7 @@ public class GHIssueComment extends GHObject implements Reactable {
      * @return the html url
      */
     public URL getHtmlUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
@@ -107,7 +108,9 @@ public class GHIssueComment extends GHObject implements Reactable {
      * @return the author association
      */
     public GHCommentAuthorAssociation getAuthorAssociation() {
-        return GHCommentAuthorAssociation.valueOf(author_association);
+        return EnumUtils.getEnumOrDefault(GHCommentAuthorAssociation.class,
+                authorAssociation,
+                GHCommentAuthorAssociation.UNKNOWN);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHIssueEvent.java b/src/main/java/org/kohsuke/github/GHIssueEvent.java
index 11193e263..d9065a10f 100644
--- a/src/main/java/org/kohsuke/github/GHIssueEvent.java
+++ b/src/main/java/org/kohsuke/github/GHIssueEvent.java
@@ -22,13 +22,13 @@ public class GHIssueEvent extends GitHubInteractiveObject {
     }
 
     private long id;
-    private String node_id;
+    private String nodeId;
     private String url;
     private GHUser actor;
     private String event;
-    private String commit_id;
-    private String commit_url;
-    private String created_at;
+    private String commitId;
+    private String commitUrl;
+    private String createdAt;
     private GHMilestone milestone;
     private GHLabel label;
     private GHUser assignee;
@@ -53,7 +53,7 @@ public class GHIssueEvent extends GitHubInteractiveObject {
      * @return the node id
      */
     public String getNodeId() {
-        return node_id;
+        return nodeId;
     }
 
     /**
@@ -90,7 +90,7 @@ public class GHIssueEvent extends GitHubInteractiveObject {
      * @return the commit id
      */
     public String getCommitId() {
-        return commit_id;
+        return commitId;
     }
 
     /**
@@ -99,7 +99,7 @@ public class GHIssueEvent extends GitHubInteractiveObject {
      * @return the commit url
      */
     public String getCommitUrl() {
-        return commit_url;
+        return commitUrl;
     }
 
     /**
@@ -109,7 +109,7 @@ public class GHIssueEvent extends GitHubInteractiveObject {
      */
     @WithBridgeMethods(value = Date.class, adapterMethod = "instantToDate")
     public Instant getCreatedAt() {
-        return GitHubClient.parseInstant(created_at);
+        return GitHubClient.parseInstant(createdAt);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHLabel.java b/src/main/java/org/kohsuke/github/GHLabel.java
index 83f1dfa73..1b720d2d0 100644
--- a/src/main/java/org/kohsuke/github/GHLabel.java
+++ b/src/main/java/org/kohsuke/github/GHLabel.java
@@ -27,7 +27,7 @@ public class GHLabel extends GitHubInteractiveObject {
     private long id;
     private String nodeId;
     @JsonProperty("default")
-    private boolean default_;
+    private boolean isDefault;
 
     @Nonnull
     private String url, name, color;
@@ -117,7 +117,7 @@ public class GHLabel extends GitHubInteractiveObject {
      * @return true if the label is a default one
      */
     public boolean isDefault() {
-        return default_;
+        return isDefault;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHLicense.java b/src/main/java/org/kohsuke/github/GHLicense.java
index 9a66ad3a9..1b39a1922 100644
--- a/src/main/java/org/kohsuke/github/GHLicense.java
+++ b/src/main/java/org/kohsuke/github/GHLicense.java
@@ -62,7 +62,7 @@ public class GHLicense extends GHObject {
     protected Boolean featured;
 
     /** The body. */
-    protected String html_url, description, category, implementation, body;
+    protected String htmlUrl, description, category, implementation, body;
 
     /** The required. */
     protected List<String> required = new ArrayList<String>();
@@ -121,7 +121,7 @@ public class GHLicense extends GHObject {
      */
     public URL getHtmlUrl() throws IOException {
         populate();
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHMilestone.java b/src/main/java/org/kohsuke/github/GHMilestone.java
index c0dbc6792..5dcbdd868 100644
--- a/src/main/java/org/kohsuke/github/GHMilestone.java
+++ b/src/main/java/org/kohsuke/github/GHMilestone.java
@@ -28,11 +28,11 @@ public class GHMilestone extends GHObject {
 
     /** The creator. */
     GHUser creator;
-    private String state, due_on, title, description, html_url;
-    private int closed_issues, open_issues, number;
+    private String state, dueOn, title, description, htmlUrl;
+    private int closedIssues, openIssues, number;
 
     /** The closed at. */
-    protected String closed_at;
+    protected String closedAt;
 
     /**
      * Gets owner.
@@ -60,7 +60,7 @@ public class GHMilestone extends GHObject {
      */
     @WithBridgeMethods(value = Date.class, adapterMethod = "instantToDate")
     public Instant getDueOn() {
-        return GitHubClient.parseInstant(due_on);
+        return GitHubClient.parseInstant(dueOn);
     }
 
     /**
@@ -70,7 +70,7 @@ public class GHMilestone extends GHObject {
      */
     @WithBridgeMethods(value = Date.class, adapterMethod = "instantToDate")
     public Instant getClosedAt() {
-        return GitHubClient.parseInstant(closed_at);
+        return GitHubClient.parseInstant(closedAt);
     }
 
     /**
@@ -97,7 +97,7 @@ public class GHMilestone extends GHObject {
      * @return the closed issues
      */
     public int getClosedIssues() {
-        return closed_issues;
+        return closedIssues;
     }
 
     /**
@@ -106,7 +106,7 @@ public class GHMilestone extends GHObject {
      * @return the open issues
      */
     public int getOpenIssues() {
-        return open_issues;
+        return openIssues;
     }
 
     /**
@@ -124,7 +124,7 @@ public class GHMilestone extends GHObject {
      * @return the html url
      */
     public URL getHtmlUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java
index ec434595a..0167f439a 100644
--- a/src/main/java/org/kohsuke/github/GHOrganization.java
+++ b/src/main/java/org/kohsuke/github/GHOrganization.java
@@ -24,7 +24,7 @@ public class GHOrganization extends GHPerson {
     public GHOrganization() {
     }
 
-    private boolean has_organization_projects;
+    private boolean hasOrganizationProjects;
 
     /**
      * Starts a builder that creates a new repository.
@@ -378,7 +378,7 @@ public class GHOrganization extends GHPerson {
      * @return the boolean
      */
     public boolean areOrganizationProjectsEnabled() {
-        return has_organization_projects;
+        return hasOrganizationProjects;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHPerson.java b/src/main/java/org/kohsuke/github/GHPerson.java
index a2ed44c04..af1a9a16e 100644
--- a/src/main/java/org/kohsuke/github/GHPerson.java
+++ b/src/main/java/org/kohsuke/github/GHPerson.java
@@ -28,24 +28,24 @@ public abstract class GHPerson extends GHObject {
 
     /** The avatar url. */
     // core data fields that exist even for "small" user data (such as the user info in pull request)
-    protected String login, avatar_url;
+    protected String login, avatarUrl;
 
     /** The twitter username. */
     // other fields (that only show up in full data)
-    protected String location, blog, email, bio, name, company, type, twitter_username;
+    protected String location, blog, email, bio, name, company, type, twitterUsername;
 
     /** The html url. */
-    protected String html_url;
+    protected String htmlUrl;
 
     /** The public gists. */
-    protected int followers, following, public_repos, public_gists;
+    protected int followers, following, publicRepos, publicGists;
 
     /** The hireable. */
-    protected boolean site_admin, hireable;
+    protected boolean siteAdmin, hireable;
 
     /** The total private repos. */
     // other fields (that only show up in full data) that require privileged scope
-    protected Integer total_private_repos;
+    protected Integer totalPrivateRepos;
 
     /**
      * Fully populate the data by retrieving missing data.
@@ -144,7 +144,7 @@ public abstract class GHPerson extends GHObject {
      * @return the avatar url
      */
     public String getAvatarUrl() {
-        return avatar_url;
+        return avatarUrl;
     }
 
     /**
@@ -201,7 +201,7 @@ public abstract class GHPerson extends GHObject {
      */
     public String getTwitterUsername() throws IOException {
         populate();
-        return twitter_username;
+        return twitterUsername;
     }
 
     /**
@@ -248,7 +248,7 @@ public abstract class GHPerson extends GHObject {
      * @return the html url
      */
     public URL getHtmlUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
@@ -272,7 +272,7 @@ public abstract class GHPerson extends GHObject {
      */
     public int getPublicGistCount() throws IOException {
         populate();
-        return public_gists;
+        return publicGists;
     }
 
     /**
@@ -284,7 +284,7 @@ public abstract class GHPerson extends GHObject {
      */
     public int getPublicRepoCount() throws IOException {
         populate();
-        return public_repos;
+        return publicRepos;
     }
 
     /**
@@ -326,15 +326,15 @@ public abstract class GHPerson extends GHObject {
     }
 
     /**
-     * Gets the site_admin field.
+     * Gets the siteAdmin field.
      *
-     * @return the site_admin field
+     * @return the siteAdmin field
      * @throws IOException
      *             the io exception
      */
     public boolean isSiteAdmin() throws IOException {
         populate();
-        return site_admin;
+        return siteAdmin;
     }
 
     /**
@@ -346,6 +346,6 @@ public abstract class GHPerson extends GHObject {
      */
     public Optional<Integer> getTotalPrivateRepoCount() throws IOException {
         populate();
-        return Optional.ofNullable(total_private_repos);
+        return Optional.ofNullable(totalPrivateRepos);
     }
 }
diff --git a/src/main/java/org/kohsuke/github/GHProject.java b/src/main/java/org/kohsuke/github/GHProject.java
index 38fcf51e9..998f7495d 100644
--- a/src/main/java/org/kohsuke/github/GHProject.java
+++ b/src/main/java/org/kohsuke/github/GHProject.java
@@ -48,8 +48,8 @@ public class GHProject extends GHObject {
     /** The owner. */
     protected GHObject owner;
 
-    private String owner_url;
-    private String html_url;
+    private String ownerUrl;
+    private String htmlUrl;
     private String name;
     private String body;
     private int number;
@@ -62,7 +62,7 @@ public class GHProject extends GHObject {
      * @return the html url
      */
     public URL getHtmlUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
@@ -76,11 +76,11 @@ public class GHProject extends GHObject {
     public GHObject getOwner() throws IOException {
         if (owner == null) {
             try {
-                if (owner_url.contains("/orgs/")) {
+                if (ownerUrl.contains("/orgs/")) {
                     owner = root().createRequest().withUrlPath(getOwnerUrl().getPath()).fetch(GHOrganization.class);
-                } else if (owner_url.contains("/users/")) {
+                } else if (ownerUrl.contains("/users/")) {
                     owner = root().createRequest().withUrlPath(getOwnerUrl().getPath()).fetch(GHUser.class);
-                } else if (owner_url.contains("/repos/")) {
+                } else if (ownerUrl.contains("/repos/")) {
                     String[] pathElements = getOwnerUrl().getPath().split("/");
                     owner = GHRepository.read(root(), pathElements[1], pathElements[2]);
                 }
@@ -97,7 +97,7 @@ public class GHProject extends GHObject {
      * @return the owner url
      */
     public URL getOwnerUrl() {
-        return GitHubClient.parseURL(owner_url);
+        return GitHubClient.parseURL(ownerUrl);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHProjectCard.java b/src/main/java/org/kohsuke/github/GHProjectCard.java
index 20a95294a..b9d200287 100644
--- a/src/main/java/org/kohsuke/github/GHProjectCard.java
+++ b/src/main/java/org/kohsuke/github/GHProjectCard.java
@@ -26,7 +26,7 @@ public class GHProjectCard extends GHObject {
 
     private String note;
     private GHUser creator;
-    private String content_url, project_url, column_url;
+    private String contentUrl, projectUrl, columnUrl;
     private boolean archived;
 
     /**
@@ -109,10 +109,10 @@ public class GHProjectCard extends GHObject {
      *             the io exception
      */
     public GHIssue getContent() throws IOException {
-        if (StringUtils.isEmpty(content_url))
+        if (StringUtils.isEmpty(contentUrl))
             return null;
         try {
-            if (content_url.contains("/pulls")) {
+            if (contentUrl.contains("/pulls")) {
                 return root().createRequest().withUrlPath(getContentUrl().getPath()).fetch(GHPullRequest.class);
             } else {
                 return root().createRequest().withUrlPath(getContentUrl().getPath()).fetch(GHIssue.class);
@@ -147,7 +147,7 @@ public class GHProjectCard extends GHObject {
      * @return the content url
      */
     public URL getContentUrl() {
-        return GitHubClient.parseURL(content_url);
+        return GitHubClient.parseURL(contentUrl);
     }
 
     /**
@@ -156,7 +156,7 @@ public class GHProjectCard extends GHObject {
      * @return the project url
      */
     public URL getProjectUrl() {
-        return GitHubClient.parseURL(project_url);
+        return GitHubClient.parseURL(projectUrl);
     }
 
     /**
@@ -165,7 +165,7 @@ public class GHProjectCard extends GHObject {
      * @return the column url
      */
     public URL getColumnUrl() {
-        return GitHubClient.parseURL(column_url);
+        return GitHubClient.parseURL(columnUrl);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHProjectColumn.java b/src/main/java/org/kohsuke/github/GHProjectColumn.java
index e4ca1f5f9..0328faa4d 100644
--- a/src/main/java/org/kohsuke/github/GHProjectColumn.java
+++ b/src/main/java/org/kohsuke/github/GHProjectColumn.java
@@ -24,7 +24,7 @@ public class GHProjectColumn extends GHObject {
     protected GHProject project;
 
     private String name;
-    private String project_url;
+    private String projectUrl;
 
     /**
      * Wrap gh project column.
@@ -82,7 +82,7 @@ public class GHProjectColumn extends GHObject {
      * @return the project url
      */
     public URL getProjectUrl() {
-        return GitHubClient.parseURL(project_url);
+        return GitHubClient.parseURL(projectUrl);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHPullRequest.java b/src/main/java/org/kohsuke/github/GHPullRequest.java
index 28920f58e..1c2a28ef6 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequest.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequest.java
@@ -56,30 +56,30 @@ public class GHPullRequest extends GHIssue implements Refreshable {
     private static final String COMMENTS_ACTION = "/comments";
     private static final String REQUEST_REVIEWERS = "/requested_reviewers";
 
-    private String patch_url, diff_url, issue_url;
+    private String patchUrl, diffUrl, issueUrl;
     private GHCommitPointer base;
-    private String merged_at;
+    private String mergedAt;
     private GHCommitPointer head;
 
     // details that are only available when obtained from ID
-    private GHUser merged_by;
-    private int review_comments, additions, commits;
-    private boolean merged, maintainer_can_modify;
+    private GHUser mergedBy;
+    private int reviewComments, additions, commits;
+    private boolean merged, maintainerCanModify;
 
     /** The draft. */
     // making these package private to all for testing
     boolean draft;
     private Boolean mergeable;
     private int deletions;
-    private String mergeable_state;
-    private int changed_files;
-    private String merge_commit_sha;
-    private AutoMerge auto_merge;
+    private String mergeableState;
+    private int changedFiles;
+    private String mergeCommitSha;
+    private AutoMerge autoMerge;
 
     // pull request reviewers
 
-    private GHUser[] requested_reviewers;
-    private GHTeam[] requested_teams;
+    private GHUser[] requestedReviewers;
+    private GHTeam[] requestedTeams;
 
     /**
      * Wrap up.
@@ -119,7 +119,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
      * @return the {@linkplain AutoMerge} or {@code null} if no auto merge is set.
      */
     public AutoMerge getAutoMerge() {
-        return auto_merge;
+        return autoMerge;
     }
 
     /**
@@ -128,7 +128,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
      * @return the patch url
      */
     public URL getPatchUrl() {
-        return GitHubClient.parseURL(patch_url);
+        return GitHubClient.parseURL(patchUrl);
     }
 
     /**
@@ -137,7 +137,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
      * @return the issue url
      */
     public URL getIssueUrl() {
-        return GitHubClient.parseURL(issue_url);
+        return GitHubClient.parseURL(issueUrl);
     }
 
     /**
@@ -164,7 +164,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
      * @return the diff url
      */
     public URL getDiffUrl() {
-        return GitHubClient.parseURL(diff_url);
+        return GitHubClient.parseURL(diffUrl);
     }
 
     /**
@@ -174,7 +174,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
      */
     @WithBridgeMethods(value = Date.class, adapterMethod = "instantToDate")
     public Instant getMergedAt() {
-        return GitHubClient.parseInstant(merged_at);
+        return GitHubClient.parseInstant(mergedAt);
     }
 
     /**
@@ -211,7 +211,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
     @SuppressFBWarnings(value = { "EI_EXPOSE_REP" }, justification = "Expected behavior")
     public GHUser getMergedBy() throws IOException {
         populate();
-        return merged_by;
+        return mergedBy;
     }
 
     /**
@@ -223,7 +223,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
      */
     public int getReviewComments() throws IOException {
         populate();
-        return review_comments;
+        return reviewComments;
     }
 
     /**
@@ -271,7 +271,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
      */
     public boolean canMaintainerModify() throws IOException {
         populate();
-        return maintainer_can_modify;
+        return maintainerCanModify;
     }
 
     /**
@@ -330,7 +330,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
      */
     public String getMergeableState() throws IOException {
         populate();
-        return mergeable_state;
+        return mergeableState;
     }
 
     /**
@@ -342,7 +342,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
      */
     public int getChangedFiles() throws IOException {
         populate();
-        return changed_files;
+        return changedFiles;
     }
 
     /**
@@ -354,7 +354,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
      */
     public String getMergeCommitSha() throws IOException {
         populate();
-        return merge_commit_sha;
+        return mergeCommitSha;
     }
 
     /**
@@ -365,8 +365,8 @@ public class GHPullRequest extends GHIssue implements Refreshable {
      *             the io exception
      */
     public List<GHUser> getRequestedReviewers() throws IOException {
-        refresh(requested_reviewers);
-        return Collections.unmodifiableList(Arrays.asList(requested_reviewers));
+        refresh(requestedReviewers);
+        return Collections.unmodifiableList(Arrays.asList(requestedReviewers));
     }
 
     /**
@@ -377,8 +377,8 @@ public class GHPullRequest extends GHIssue implements Refreshable {
      *             the io exception
      */
     public List<GHTeam> getRequestedTeams() throws IOException {
-        refresh(requested_teams);
-        return Collections.unmodifiableList(Arrays.asList(requested_teams));
+        refresh(requestedTeams);
+        return Collections.unmodifiableList(Arrays.asList(requestedTeams));
     }
 
     /**
@@ -388,7 +388,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
      * Depending on the original API call where this object is created, it may not contain everything.
      */
     private void populate() throws IOException {
-        if (mergeable_state != null)
+        if (mergeableState != null)
             return; // already populated
         refresh();
     }
@@ -705,10 +705,10 @@ public class GHPullRequest extends GHIssue implements Refreshable {
         public AutoMerge() {
         }
 
-        private GHUser enabled_by;
-        private MergeMethod merge_method;
-        private String commit_title;
-        private String commit_message;
+        private GHUser enabledBy;
+        private MergeMethod mergeMethod;
+        private String commitTitle;
+        private String commitMessage;
 
         /**
          * The user who enabled the auto merge of the pull request.
@@ -717,7 +717,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
          */
         @SuppressFBWarnings(value = { "EI_EXPOSE_REP" }, justification = "Expected behavior")
         public GHUser getEnabledBy() {
-            return enabled_by;
+            return enabledBy;
         }
 
         /**
@@ -726,7 +726,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
          * @return the {@linkplain MergeMethod}
          */
         public MergeMethod getMergeMethod() {
-            return merge_method;
+            return mergeMethod;
         }
 
         /**
@@ -735,7 +735,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
          * @return the title of the commit
          */
         public String getCommitTitle() {
-            return commit_title;
+            return commitTitle;
         }
 
         /**
@@ -744,7 +744,7 @@ public class GHPullRequest extends GHIssue implements Refreshable {
          * @return the message of the commit
          */
         public String getCommitMessage() {
-            return commit_message;
+            return commitMessage;
         }
     }
 }
diff --git a/src/main/java/org/kohsuke/github/GHPullRequestCommitDetail.java b/src/main/java/org/kohsuke/github/GHPullRequestCommitDetail.java
index f01da64f7..0ddd7ae90 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequestCommitDetail.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequestCommitDetail.java
@@ -121,7 +121,7 @@ public class GHPullRequestCommitDetail {
         String url;
 
         /** The comment count. */
-        int comment_count;
+        Integer commentCount;
 
         /**
          * Gets author.
@@ -163,9 +163,20 @@ public class GHPullRequestCommitDetail {
          * Gets comment count.
          *
          * @return the comment count
+         * @deprecated Use {@link #getCommentCount()}
          */
+        @Deprecated
         public int getComment_count() {
-            return comment_count;
+            return getCommentCount();
+        }
+
+        /**
+         * Gets comment count.
+         *
+         * @return the comment count
+         */
+        public Integer getCommentCount() {
+            return commentCount;
         }
 
         /**
@@ -196,7 +207,7 @@ public class GHPullRequestCommitDetail {
         String url;
 
         /** The html url. */
-        String html_url;
+        String htmlUrl;
 
         /**
          * Gets url.
@@ -212,8 +223,19 @@ public class GHPullRequestCommitDetail {
          *
          * @return the html url
          */
+        public URL getHtmlUrl() {
+            return GitHubClient.parseURL(htmlUrl);
+        }
+
+        /**
+         * Gets html url.
+         *
+         * @return the html url
+         * @deprecated Use {@link #getHtmlUrl()}
+         */
+        @Deprecated
         public URL getHtml_url() {
-            return GitHubClient.parseURL(html_url);
+            return getHtmlUrl();
         }
 
         /**
@@ -236,10 +258,10 @@ public class GHPullRequestCommitDetail {
     String url;
 
     /** The html url. */
-    String html_url;
+    String htmlUrl;
 
     /** The comments url. */
-    String comments_url;
+    String commentsUrl;
 
     /** The parents. */
     CommitPointer[] parents;
@@ -277,7 +299,7 @@ public class GHPullRequestCommitDetail {
      * @return the url
      */
     public URL getUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
@@ -286,7 +308,7 @@ public class GHPullRequestCommitDetail {
      * @return the comments url
      */
     public URL getCommentsUrl() {
-        return GitHubClient.parseURL(comments_url);
+        return GitHubClient.parseURL(commentsUrl);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHPullRequestFileDetail.java b/src/main/java/org/kohsuke/github/GHPullRequestFileDetail.java
index 2a316f49e..84b191bf5 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequestFileDetail.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequestFileDetail.java
@@ -60,19 +60,19 @@ public class GHPullRequestFileDetail {
     int changes;
 
     /** The blob url. */
-    String blob_url;
+    String blobUrl;
 
     /** The raw url. */
-    String raw_url;
+    String rawUrl;
 
     /** The contents url. */
-    String contents_url;
+    String contentsUrl;
 
     /** The patch. */
     String patch;
 
     /** The previous filename. */
-    String previous_filename;
+    String previousFilename;
 
     /**
      * Gets sha of the file (not commit sha).
@@ -136,7 +136,7 @@ public class GHPullRequestFileDetail {
      * @return the blob url
      */
     public URL getBlobUrl() {
-        return GitHubClient.parseURL(blob_url);
+        return GitHubClient.parseURL(blobUrl);
     }
 
     /**
@@ -145,7 +145,7 @@ public class GHPullRequestFileDetail {
      * @return the raw url
      */
     public URL getRawUrl() {
-        return GitHubClient.parseURL(raw_url);
+        return GitHubClient.parseURL(rawUrl);
     }
 
     /**
@@ -154,7 +154,7 @@ public class GHPullRequestFileDetail {
      * @return the contents url
      */
     public URL getContentsUrl() {
-        return GitHubClient.parseURL(contents_url);
+        return GitHubClient.parseURL(contentsUrl);
     }
 
     /**
@@ -172,6 +172,6 @@ public class GHPullRequestFileDetail {
      * @return the previous filename
      */
     public String getPreviousFilename() {
-        return previous_filename;
+        return previousFilename;
     }
 }
diff --git a/src/main/java/org/kohsuke/github/GHPullRequestReview.java b/src/main/java/org/kohsuke/github/GHPullRequestReview.java
index 6e1bbab3c..b0d8a5d9a 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequestReview.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequestReview.java
@@ -54,10 +54,10 @@ public class GHPullRequestReview extends GHObject {
 
     private String body;
     private GHUser user;
-    private String commit_id;
+    private String commitId;
     private GHPullRequestReviewState state;
-    private String submitted_at;
-    private String html_url;
+    private String submittedAt;
+    private String htmlUrl;
 
     /**
      * Wrap up.
@@ -110,7 +110,7 @@ public class GHPullRequestReview extends GHObject {
      * @return the commit id
      */
     public String getCommitId() {
-        return commit_id;
+        return commitId;
     }
 
     /**
@@ -129,7 +129,7 @@ public class GHPullRequestReview extends GHObject {
      * @return the html url
      */
     public URL getHtmlUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
@@ -148,7 +148,7 @@ public class GHPullRequestReview extends GHObject {
      */
     @WithBridgeMethods(value = Date.class, adapterMethod = "instantToDate")
     public Instant getSubmittedAt() {
-        return GitHubClient.parseInstant(submitted_at);
+        return GitHubClient.parseInstant(submittedAt);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHPullRequestReviewBuilder.java b/src/main/java/org/kohsuke/github/GHPullRequestReviewBuilder.java
index c536dbfdc..30cdf50e2 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequestReviewBuilder.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequestReviewBuilder.java
@@ -195,13 +195,13 @@ public class GHPullRequestReviewBuilder {
         private final String body;
         private final String path;
         private final int line;
-        private final int start_line;
+        private final int startLine;
 
         MultilineDraftReviewComment(final String body, final String path, final int startLine, final int line) {
             this.body = body;
             this.path = path;
             this.line = line;
-            this.start_line = startLine;
+            this.startLine = startLine;
         }
 
         public String getBody() {
@@ -227,7 +227,7 @@ public class GHPullRequestReviewBuilder {
          * @return the start line of the comment.
          */
         public int getStartLine() {
-            return start_line;
+            return startLine;
         }
     }
 
diff --git a/src/main/java/org/kohsuke/github/GHPullRequestReviewComment.java b/src/main/java/org/kohsuke/github/GHPullRequestReviewComment.java
index 6c5e1a680..0537c7a1c 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequestReviewComment.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequestReviewComment.java
@@ -51,28 +51,28 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
     /** The owner. */
     GHPullRequest owner;
 
-    private Long pull_request_review_id = -1L;
+    private Long pullRequestReviewId = -1L;
     private String body;
     private GHUser user;
     private String path;
-    private String html_url;
-    private String pull_request_url;
+    private String htmlUrl;
+    private String pullRequestUrl;
     private int position = -1;
-    private int original_position = -1;
-    private long in_reply_to_id = -1L;
-    private Integer start_line = -1;
-    private Integer original_start_line = -1;
-    private String start_side;
+    private int originalPosition = -1;
+    private long inReplyToId = -1L;
+    private Integer startLine = -1;
+    private Integer originalStartLine = -1;
+    private String startSide;
     private int line = -1;
-    private int original_line = -1;
+    private int originalLine = -1;
     private String side;
-    private String diff_hunk;
-    private String commit_id;
-    private String original_commit_id;
-    private String body_html;
-    private String body_text;
+    private String diffHunk;
+    private String commitId;
+    private String originalCommitId;
+    private String bodyHtml;
+    private String bodyText;
     private GHPullRequestReviewCommentReactions reactions;
-    private GHCommentAuthorAssociation author_association;
+    private GHCommentAuthorAssociation authorAssociation;
 
     /**
      * Wrap up.
@@ -141,7 +141,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
      * @return the original position
      */
     public int getOriginalPosition() {
-        return original_position;
+        return originalPosition;
     }
 
     /**
@@ -150,7 +150,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
      * @return the diff hunk
      */
     public String getDiffHunk() {
-        return diff_hunk;
+        return diffHunk;
     }
 
     /**
@@ -159,7 +159,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
      * @return the commit id
      */
     public String getCommitId() {
-        return commit_id;
+        return commitId;
     }
 
     /**
@@ -168,7 +168,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
      * @return the commit id
      */
     public String getOriginalCommitId() {
-        return original_commit_id;
+        return originalCommitId;
     }
 
     /**
@@ -177,7 +177,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
      * @return the author association to the project
      */
     public GHCommentAuthorAssociation getAuthorAssociation() {
-        return author_association;
+        return authorAssociation;
     }
 
     /**
@@ -187,7 +187,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
      */
     @CheckForNull
     public long getInReplyToId() {
-        return in_reply_to_id;
+        return inReplyToId;
     }
 
     /**
@@ -196,7 +196,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
      * @return the html url
      */
     public URL getHtmlUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
@@ -227,7 +227,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
      * @return the start line
      */
     public int getStartLine() {
-        return start_line != null ? start_line : -1;
+        return startLine != null ? startLine : -1;
     }
 
     /**
@@ -236,7 +236,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
      * @return the original start line
      */
     public int getOriginalStartLine() {
-        return original_start_line != null ? original_start_line : -1;
+        return originalStartLine != null ? originalStartLine : -1;
     }
 
     /**
@@ -245,7 +245,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
      * @return {@link Side} the side of the first line
      */
     public Side getStartSide() {
-        return Side.from(start_side);
+        return Side.from(startSide);
     }
 
     /**
@@ -263,7 +263,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
      * @return the line to which the comment applies
      */
     public int getOriginalLine() {
-        return original_line;
+        return originalLine;
     }
 
     /**
@@ -282,7 +282,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
      * @return {@link Long} the ID of the pull request review
      */
     public Long getPullRequestReviewId() {
-        return pull_request_review_id != null ? pull_request_review_id : -1;
+        return pullRequestReviewId != null ? pullRequestReviewId : -1;
     }
 
     /**
@@ -291,7 +291,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
      * @return {@link URL} the URL of the pull request
      */
     public URL getPullRequestUrl() {
-        return GitHubClient.parseURL(pull_request_url);
+        return GitHubClient.parseURL(pullRequestUrl);
     }
 
     /**
@@ -300,7 +300,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
      * @return {@link String} the body in html format
      */
     public String getBodyHtml() {
-        return body_html;
+        return bodyHtml;
     }
 
     /**
@@ -309,7 +309,7 @@ public class GHPullRequestReviewComment extends GHObject implements Reactable {
      * @return {@link String} the body text
      */
     public String getBodyText() {
-        return body_text;
+        return bodyText;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHPullRequestReviewCommentReactions.java b/src/main/java/org/kohsuke/github/GHPullRequestReviewCommentReactions.java
index 8a9624d69..ac3d5ee6a 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequestReviewCommentReactions.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequestReviewCommentReactions.java
@@ -22,11 +22,11 @@ public class GHPullRequestReviewCommentReactions {
 
     private String url;
 
-    private int total_count = -1;
+    private int totalCount = -1;
     @JsonProperty("+1")
-    private int plus_one = -1;
+    private int plusOne = -1;
     @JsonProperty("-1")
-    private int minus_one = -1;
+    private int minusOne = -1;
     private int laugh = -1;
     private int confused = -1;
     private int heart = -1;
@@ -49,7 +49,7 @@ public class GHPullRequestReviewCommentReactions {
      * @return the number of total reactions
      */
     public int getTotalCount() {
-        return total_count;
+        return totalCount;
     }
 
     /**
@@ -58,7 +58,7 @@ public class GHPullRequestReviewCommentReactions {
      * @return the number of +1 reactions
      */
     public int getPlusOne() {
-        return plus_one;
+        return plusOne;
     }
 
     /**
@@ -67,7 +67,7 @@ public class GHPullRequestReviewCommentReactions {
      * @return the number of -1 reactions
      */
     public int getMinusOne() {
-        return minus_one;
+        return minusOne;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHRelease.java b/src/main/java/org/kohsuke/github/GHRelease.java
index e0b8b0853..f95b9dbc0 100644
--- a/src/main/java/org/kohsuke/github/GHRelease.java
+++ b/src/main/java/org/kohsuke/github/GHRelease.java
@@ -33,20 +33,20 @@ public class GHRelease extends GHObject {
     /** The owner. */
     GHRepository owner;
 
-    private String html_url;
-    private String assets_url;
+    private String htmlUrl;
+    private String assetsUrl;
     private List<GHAsset> assets;
-    private String upload_url;
-    private String tag_name;
-    private String target_commitish;
+    private String uploadUrl;
+    private String tagName;
+    private String targetCommitish;
     private String name;
     private String body;
     private boolean draft;
     private boolean prerelease;
     private String publishedAt;
-    private String tarball_url;
-    private String zipball_url;
-    private String discussion_url;
+    private String tarballUrl;
+    private String zipballUrl;
+    private String discussionUrl;
 
     /**
      * Gets discussion url. Only present if a discussion relating to the release exists
@@ -54,7 +54,7 @@ public class GHRelease extends GHObject {
      * @return the discussion url
      */
     public String getDiscussionUrl() {
-        return discussion_url;
+        return discussionUrl;
     }
 
     /**
@@ -63,7 +63,7 @@ public class GHRelease extends GHObject {
      * @return the assets url
      */
     public String getAssetsUrl() {
-        return assets_url;
+        return assetsUrl;
     }
 
     /**
@@ -90,7 +90,7 @@ public class GHRelease extends GHObject {
      * @return the html url
      */
     public URL getHtmlUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
@@ -147,7 +147,7 @@ public class GHRelease extends GHObject {
      * @return the tag name
      */
     public String getTagName() {
-        return tag_name;
+        return tagName;
     }
 
     /**
@@ -156,7 +156,7 @@ public class GHRelease extends GHObject {
      * @return the target commitish
      */
     public String getTargetCommitish() {
-        return target_commitish;
+        return targetCommitish;
     }
 
     /**
@@ -165,7 +165,7 @@ public class GHRelease extends GHObject {
      * @return the upload url
      */
     public String getUploadUrl() {
-        return upload_url;
+        return uploadUrl;
     }
 
     /**
@@ -174,7 +174,7 @@ public class GHRelease extends GHObject {
      * @return the zipball url
      */
     public String getZipballUrl() {
-        return zipball_url;
+        return zipballUrl;
     }
 
     /**
@@ -183,7 +183,7 @@ public class GHRelease extends GHObject {
      * @return the tarball url
      */
     public String getTarballUrl() {
-        return tarball_url;
+        return tarballUrl;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java
index baa02bbd0..44bb66aa9 100644
--- a/src/main/java/org/kohsuke/github/GHRepository.java
+++ b/src/main/java/org/kohsuke/github/GHRepository.java
@@ -76,9 +76,9 @@ public class GHRepository extends GHObject {
     public GHRepository() {
     }
 
-    private String nodeId, description, homepage, name, full_name;
+    private String nodeId, description, homepage, name, fullName;
 
-    private String html_url; // this is the UI
+    private String htmlUrl; // this is the UI
 
     /*
      * The license information makes use of the preview API.
@@ -87,36 +87,36 @@ public class GHRepository extends GHObject {
      */
     private GHLicense license;
 
-    private String git_url, ssh_url, clone_url, svn_url, mirror_url;
+    private String gitUrl, sshUrl, cloneUrl, svnUrl, mirrorUrl;
 
     private GHUser owner; // not fully populated. beware.
 
-    private boolean has_issues, has_wiki, fork, has_downloads, has_pages, archived, disabled, has_projects;
+    private boolean hasIssues, hasWiki, fork, hasDownloads, hasPages, archived, disabled, hasProjects;
 
-    private boolean allow_squash_merge;
+    private boolean allowSquashMerge;
 
-    private boolean allow_merge_commit;
+    private boolean allowMergeCommit;
 
-    private boolean allow_rebase_merge;
+    private boolean allowRebaseMerge;
 
-    private boolean allow_forking;
+    private boolean allowForking;
 
-    private boolean delete_branch_on_merge;
+    private boolean deleteBranchOnMerge;
 
     @JsonProperty("private")
-    private boolean _private;
+    private boolean isPrivate;
 
     private String visibility;
 
-    private int forks_count, stargazers_count, watchers_count, size, open_issues_count, subscribers_count;
+    private int forksCount, stargazersCount, watchersCount, size, openIssuesCount, subscribersCount;
 
-    private String pushed_at;
+    private String pushedAt;
 
     private Map<Integer, GHMilestone> milestones = Collections.synchronizedMap(new WeakHashMap<>());
 
-    private String default_branch, language;
+    private String defaultBranch, language;
 
-    private GHRepository template_repository;
+    private GHRepository templateRepository;
 
     private Map<String, GHCommit> commits = Collections.synchronizedMap(new WeakHashMap<>());
 
@@ -232,7 +232,7 @@ public class GHRepository extends GHObject {
      * @return the git transport url
      */
     public String getGitTransportUrl() {
-        return git_url;
+        return gitUrl;
     }
 
     /**
@@ -241,7 +241,7 @@ public class GHRepository extends GHObject {
      * @return the http transport url
      */
     public String getHttpTransportUrl() {
-        return clone_url;
+        return cloneUrl;
     }
 
     /**
@@ -250,7 +250,7 @@ public class GHRepository extends GHObject {
      * @return the svn url
      */
     public String getSvnUrl() {
-        return svn_url;
+        return svnUrl;
     }
 
     /**
@@ -260,7 +260,7 @@ public class GHRepository extends GHObject {
      * @return the mirror url
      */
     public String getMirrorUrl() {
-        return mirror_url;
+        return mirrorUrl;
     }
 
     /**
@@ -269,7 +269,7 @@ public class GHRepository extends GHObject {
      * @return the ssh url
      */
     public String getSshUrl() {
-        return ssh_url;
+        return sshUrl;
     }
 
     /**
@@ -278,7 +278,7 @@ public class GHRepository extends GHObject {
      * @return the html url
      */
     public URL getHtmlUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
@@ -297,7 +297,7 @@ public class GHRepository extends GHObject {
      * @return the full name
      */
     public String getFullName() {
-        return full_name;
+        return fullName;
     }
 
     /**
@@ -563,7 +563,7 @@ public class GHRepository extends GHObject {
      * @return the boolean
      */
     public boolean hasIssues() {
-        return has_issues;
+        return hasIssues;
     }
 
     /**
@@ -572,7 +572,7 @@ public class GHRepository extends GHObject {
      * @return the boolean
      */
     public boolean hasProjects() {
-        return has_projects;
+        return hasProjects;
     }
 
     /**
@@ -581,7 +581,7 @@ public class GHRepository extends GHObject {
      * @return the boolean
      */
     public boolean hasWiki() {
-        return has_wiki;
+        return hasWiki;
     }
 
     /**
@@ -617,7 +617,7 @@ public class GHRepository extends GHObject {
      * @return the boolean
      */
     public boolean isAllowSquashMerge() {
-        return allow_squash_merge;
+        return allowSquashMerge;
     }
 
     /**
@@ -626,7 +626,7 @@ public class GHRepository extends GHObject {
      * @return the boolean
      */
     public boolean isAllowMergeCommit() {
-        return allow_merge_commit;
+        return allowMergeCommit;
     }
 
     /**
@@ -635,7 +635,7 @@ public class GHRepository extends GHObject {
      * @return the boolean
      */
     public boolean isAllowRebaseMerge() {
-        return allow_rebase_merge;
+        return allowRebaseMerge;
     }
 
     /**
@@ -644,7 +644,7 @@ public class GHRepository extends GHObject {
      * @return the boolean
      */
     public boolean isAllowForking() {
-        return allow_forking;
+        return allowForking;
     }
 
     /**
@@ -653,7 +653,7 @@ public class GHRepository extends GHObject {
      * @return the boolean
      */
     public boolean isDeleteBranchOnMerge() {
-        return delete_branch_on_merge;
+        return deleteBranchOnMerge;
     }
 
     /**
@@ -663,7 +663,7 @@ public class GHRepository extends GHObject {
      * @return the forks
      */
     public int getForksCount() {
-        return forks_count;
+        return forksCount;
     }
 
     /**
@@ -672,7 +672,7 @@ public class GHRepository extends GHObject {
      * @return the stargazers count
      */
     public int getStargazersCount() {
-        return stargazers_count;
+        return stargazersCount;
     }
 
     /**
@@ -681,7 +681,7 @@ public class GHRepository extends GHObject {
      * @return the boolean
      */
     public boolean isPrivate() {
-        return _private;
+        return isPrivate;
     }
 
     /**
@@ -773,7 +773,7 @@ public class GHRepository extends GHObject {
      * @return the boolean
      */
     public boolean hasDownloads() {
-        return has_downloads;
+        return hasDownloads;
     }
 
     /**
@@ -782,7 +782,7 @@ public class GHRepository extends GHObject {
      * @return the boolean
      */
     public boolean hasPages() {
-        return has_pages;
+        return hasPages;
     }
 
     /**
@@ -791,7 +791,7 @@ public class GHRepository extends GHObject {
      * @return the watchers
      */
     public int getWatchersCount() {
-        return watchers_count;
+        return watchersCount;
     }
 
     /**
@@ -800,7 +800,7 @@ public class GHRepository extends GHObject {
      * @return the open issue count
      */
     public int getOpenIssueCount() {
-        return open_issues_count;
+        return openIssuesCount;
     }
 
     /**
@@ -809,7 +809,7 @@ public class GHRepository extends GHObject {
      * @return the subscribers count
      */
     public int getSubscribersCount() {
-        return subscribers_count;
+        return subscribersCount;
     }
 
     /**
@@ -819,7 +819,7 @@ public class GHRepository extends GHObject {
      */
     @WithBridgeMethods(value = Date.class, adapterMethod = "instantToDate")
     public Instant getPushedAt() {
-        return GitHubClient.parseInstant(pushed_at);
+        return GitHubClient.parseInstant(pushedAt);
     }
 
     /**
@@ -828,7 +828,7 @@ public class GHRepository extends GHObject {
      * @return This field is null until the user explicitly configures the default branch.
      */
     public String getDefaultBranch() {
-        return default_branch;
+        return defaultBranch;
     }
 
     /**
@@ -838,7 +838,7 @@ public class GHRepository extends GHObject {
      */
     @SuppressFBWarnings(value = { "EI_EXPOSE_REP" }, justification = "Expected")
     public GHRepository getTemplateRepository() {
-        return template_repository;
+        return templateRepository;
     }
 
     /**
@@ -2666,7 +2666,7 @@ public class GHRepository extends GHObject {
 
     // Only used within listCodeownersErrors().
     private static class GHCodeownersErrors {
-        public List<GHCodeownersError> errors;
+        List<GHCodeownersError> errors;
     }
 
     /**
@@ -2910,7 +2910,7 @@ public class GHRepository extends GHObject {
         if (tail.length() > 0 && !tail.startsWith("/")) {
             tail = '/' + tail;
         }
-        return "/repos/" + full_name + tail;
+        return "/repos/" + fullName + tail;
     }
 
     /**
@@ -3058,7 +3058,7 @@ public class GHRepository extends GHObject {
 
     // Only used within listTopics().
     private static class Topics {
-        public List<String> names;
+        List<String> names;
     }
 
     /**
@@ -3255,7 +3255,7 @@ public class GHRepository extends GHObject {
      *             the io exception
      */
     public void star() throws IOException {
-        root().createRequest().method("PUT").withUrlPath(String.format("/user/starred/%s", full_name)).send();
+        root().createRequest().method("PUT").withUrlPath(String.format("/user/starred/%s", fullName)).send();
     }
 
     /**
@@ -3265,7 +3265,7 @@ public class GHRepository extends GHObject {
      *             the io exception
      */
     public void unstar() throws IOException {
-        root().createRequest().method("DELETE").withUrlPath(String.format("/user/starred/%s", full_name)).send();
+        root().createRequest().method("DELETE").withUrlPath(String.format("/user/starred/%s", fullName)).send();
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHStargazer.java b/src/main/java/org/kohsuke/github/GHStargazer.java
index 1f41a4e0e..dbfd6f18c 100644
--- a/src/main/java/org/kohsuke/github/GHStargazer.java
+++ b/src/main/java/org/kohsuke/github/GHStargazer.java
@@ -22,7 +22,7 @@ public class GHStargazer extends GitHubBridgeAdapterObject {
     }
 
     private GHRepository repository;
-    private String starred_at;
+    private String starredAt;
     private GHUser user;
 
     /**
@@ -37,13 +37,13 @@ public class GHStargazer extends GitHubBridgeAdapterObject {
 
     /**
      * Gets the date when the repository was starred, however old stars before August 2012, will all show the date the
-     * API was changed to support starred_at.
+     * API was changed to support starredAt.
      *
      * @return the date the stargazer was added
      */
     @WithBridgeMethods(value = Date.class, adapterMethod = "instantToDate")
     public Instant getStarredAt() {
-        return GitHubClient.parseInstant(starred_at);
+        return GitHubClient.parseInstant(starredAt);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHSubscription.java b/src/main/java/org/kohsuke/github/GHSubscription.java
index d2bac440c..72a843560 100644
--- a/src/main/java/org/kohsuke/github/GHSubscription.java
+++ b/src/main/java/org/kohsuke/github/GHSubscription.java
@@ -23,7 +23,7 @@ public class GHSubscription extends GitHubInteractiveObject {
     public GHSubscription() {
     }
 
-    private String created_at, url, repository_url, reason;
+    private String createdAt, url, repositoryUrl, reason;
     private boolean subscribed, ignored;
 
     private GHRepository repo;
@@ -35,7 +35,7 @@ public class GHSubscription extends GitHubInteractiveObject {
      */
     @WithBridgeMethods(value = Date.class, adapterMethod = "instantToDate")
     public Instant getCreatedAt() {
-        return GitHubClient.parseInstant(created_at);
+        return GitHubClient.parseInstant(createdAt);
     }
 
     /**
@@ -53,7 +53,7 @@ public class GHSubscription extends GitHubInteractiveObject {
      * @return the repository url
      */
     public String getRepositoryUrl() {
-        return repository_url;
+        return repositoryUrl;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHTeam.java b/src/main/java/org/kohsuke/github/GHTeam.java
index d2c9af1eb..6eff717f0 100644
--- a/src/main/java/org/kohsuke/github/GHTeam.java
+++ b/src/main/java/org/kohsuke/github/GHTeam.java
@@ -31,7 +31,7 @@ public class GHTeam extends GHObject implements Refreshable {
      */
     private static final String EXTERNAL_GROUPS = "/external-groups";
 
-    private String html_url;
+    private String htmlUrl;
     private String name;
     private String permission;
     private String slug;
@@ -514,7 +514,7 @@ public class GHTeam extends GHObject implements Refreshable {
      * @return the html url
      */
     public URL getHtmlUrl() {
-        return GitHubClient.parseURL(html_url);
+        return GitHubClient.parseURL(htmlUrl);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHThread.java b/src/main/java/org/kohsuke/github/GHThread.java
index 5666ba056..7ef547353 100644
--- a/src/main/java/org/kohsuke/github/GHThread.java
+++ b/src/main/java/org/kohsuke/github/GHThread.java
@@ -23,8 +23,8 @@ public class GHThread extends GHObject {
     private Subject subject;
     private String reason;
     private boolean unread;
-    private String last_read_at;
-    private String url, subscription_url;
+    private String lastReadAt;
+    private String url, subscriptionUrl;
 
     /**
      * The Class Subject.
@@ -38,7 +38,7 @@ public class GHThread extends GHObject {
         String url;
 
         /** The latest comment url. */
-        String latest_comment_url;
+        String latestCommentUrl;
 
         /** The type. */
         String type;
@@ -54,7 +54,7 @@ public class GHThread extends GHObject {
      */
     @WithBridgeMethods(value = Date.class, adapterMethod = "instantToDate")
     public Instant getLastReadAt() {
-        return GitHubClient.parseInstant(last_read_at);
+        return GitHubClient.parseInstant(lastReadAt);
     }
 
     /**
@@ -111,7 +111,7 @@ public class GHThread extends GHObject {
      * @return the last comment url
      */
     public String getLastCommentUrl() {
-        return subject.latest_comment_url;
+        return subject.latestCommentUrl;
     }
 
     /**
@@ -179,7 +179,7 @@ public class GHThread extends GHObject {
                 .method("PUT")
                 .with("subscribed", subscribed)
                 .with("ignored", ignored)
-                .withUrlPath(subscription_url)
+                .withUrlPath(subscriptionUrl)
                 .fetch(GHSubscription.class);
     }
 
@@ -192,7 +192,7 @@ public class GHThread extends GHObject {
      */
     public GHSubscription getSubscription() throws IOException {
         try {
-            return root().createRequest().method("POST").withUrlPath(subscription_url).fetch(GHSubscription.class);
+            return root().createRequest().method("POST").withUrlPath(subscriptionUrl).fetch(GHSubscription.class);
         } catch (FileNotFoundException e) {
             return null;
         }
diff --git a/src/main/java/org/kohsuke/github/GHUser.java b/src/main/java/org/kohsuke/github/GHUser.java
index 376238188..9de1dbdd9 100644
--- a/src/main/java/org/kohsuke/github/GHUser.java
+++ b/src/main/java/org/kohsuke/github/GHUser.java
@@ -44,9 +44,9 @@ public class GHUser extends GHPerson {
     }
 
     /** The ldap dn. */
-    protected String ldap_dn;
+    protected String ldapDn;
 
-    /** The suspended_at */
+    /** The suspendedAt */
     private String suspendedAt;
 
     /**
@@ -266,7 +266,7 @@ public class GHUser extends GHPerson {
      */
     public Optional<String> getLdapDn() throws IOException {
         super.populate();
-        return Optional.ofNullable(ldap_dn);
+        return Optional.ofNullable(ldapDn);
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHWorkflowJobsPage.java b/src/main/java/org/kohsuke/github/GHWorkflowJobsPage.java
index 91d7013f7..bb904153e 100644
--- a/src/main/java/org/kohsuke/github/GHWorkflowJobsPage.java
+++ b/src/main/java/org/kohsuke/github/GHWorkflowJobsPage.java
@@ -9,7 +9,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 @SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },
         justification = "JSON API")
 class GHWorkflowJobsPage {
-    private int total_count;
+    private int totalCount;
     private GHWorkflowJob[] jobs;
 
     /**
@@ -18,7 +18,7 @@ class GHWorkflowJobsPage {
      * @return the total count
      */
     public int getTotalCount() {
-        return total_count;
+        return totalCount;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GHWorkflowsPage.java b/src/main/java/org/kohsuke/github/GHWorkflowsPage.java
index 7786d11fa..1fb87a814 100644
--- a/src/main/java/org/kohsuke/github/GHWorkflowsPage.java
+++ b/src/main/java/org/kohsuke/github/GHWorkflowsPage.java
@@ -9,7 +9,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 @SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },
         justification = "JSON API")
 class GHWorkflowsPage {
-    private int total_count;
+    private int totalCount;
     private GHWorkflow[] workflows;
 
     /**
@@ -18,7 +18,7 @@ class GHWorkflowsPage {
      * @return the total count
      */
     public int getTotalCount() {
-        return total_count;
+        return totalCount;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GitCommit.java b/src/main/java/org/kohsuke/github/GitCommit.java
index d7a276897..44fda0fb3 100644
--- a/src/main/java/org/kohsuke/github/GitCommit.java
+++ b/src/main/java/org/kohsuke/github/GitCommit.java
@@ -20,7 +20,7 @@ import java.util.List;
 @SuppressFBWarnings(value = { "NP_UNWRITTEN_FIELD", "UWF_UNWRITTEN_FIELD" }, justification = "JSON API")
 public class GitCommit extends GitHubBridgeAdapterObject {
     private GHRepository owner;
-    private String sha, node_id, url, html_url;
+    private String sha, nodeId, url, htmlUrl;
     private GitUser author;
     private GitUser committer;
 
@@ -81,9 +81,9 @@ public class GitCommit extends GitHubBridgeAdapterObject {
         // to GHCommit, for testing purposes
         this.owner = commit.getOwner();
         this.sha = commit.getSha();
-        this.node_id = commit.getNodeId();
+        this.nodeId = commit.getNodeId();
         this.url = commit.getUrl();
-        this.html_url = commit.getHtmlUrl();
+        this.htmlUrl = commit.getHtmlUrl();
         this.author = commit.getAuthor();
         this.committer = commit.getCommitter();
         this.message = commit.getMessage();
@@ -126,7 +126,7 @@ public class GitCommit extends GitHubBridgeAdapterObject {
      * @return The node id of this commit
      */
     public String getNodeId() {
-        return node_id;
+        return nodeId;
     }
 
     /**
@@ -144,7 +144,7 @@ public class GitCommit extends GitHubBridgeAdapterObject {
      * @return The HTML URL of this commit
      */
     public String getHtmlUrl() {
-        return html_url;
+        return htmlUrl;
     }
 
     /**
diff --git a/src/main/java/org/kohsuke/github/GitHub.java b/src/main/java/org/kohsuke/github/GitHub.java
index 33cc329be..ebdd18991 100644
--- a/src/main/java/org/kohsuke/github/GitHub.java
+++ b/src/main/java/org/kohsuke/github/GitHub.java
@@ -909,7 +909,7 @@ public class GitHub {
      *            the scopes
      * @param note
      *            the note
-     * @param note_url
+     * @param noteUrl
      *            the note url
      * @return the gh authorization
      * @throws IOException
@@ -921,11 +921,11 @@ public class GitHub {
             String clientSecret,
             List<String> scopes,
             String note,
-            String note_url) throws IOException {
+            String noteUrl) throws IOException {
         Requester requester = createRequest().with("client_secret", clientSecret)
                 .with("scopes", scopes)
                 .with("note", note)
-                .with("note_url", note_url);
+                .with("note_url", noteUrl);
 
         return requester.method("PUT").withUrlPath("/authorizations/clients/" + clientId).fetch(GHAuthorization.class);
     }
diff --git a/src/main/java/org/kohsuke/github/GitHubClient.java b/src/main/java/org/kohsuke/github/GitHubClient.java
index b6f6b6522..6d0eb1e1f 100644
--- a/src/main/java/org/kohsuke/github/GitHubClient.java
+++ b/src/main/java/org/kohsuke/github/GitHubClient.java
@@ -812,14 +812,14 @@ class GitHubClient {
     }
 
     private static class GHApiInfo {
-        private String rate_limit_url;
+        private String rateLimitUrl;
 
         void check(String apiUrl) throws IOException {
-            if (rate_limit_url == null)
+            if (rateLimitUrl == null)
                 throw new IOException(apiUrl + " doesn't look like GitHub API URL");
 
             // make sure that the URL is legitimate
-            new URL(rate_limit_url);
+            new URL(rateLimitUrl);
         }
     }
 
diff --git a/src/main/java/org/kohsuke/github/PagedSearchIterable.java b/src/main/java/org/kohsuke/github/PagedSearchIterable.java
index 65f7442a2..408dd203b 100644
--- a/src/main/java/org/kohsuke/github/PagedSearchIterable.java
+++ b/src/main/java/org/kohsuke/github/PagedSearchIterable.java
@@ -65,7 +65,7 @@ public class PagedSearchIterable<T> extends PagedIterable<T> {
      */
     public int getTotalCount() {
         populate();
-        return result.total_count;
+        return result.totalCount;
     }
 
     /**
@@ -75,7 +75,7 @@ public class PagedSearchIterable<T> extends PagedIterable<T> {
      */
     public boolean isIncomplete() {
         populate();
-        return result.incomplete_results;
+        return result.incompleteResults;
     }
 
     private void populate() {
diff --git a/src/main/java/org/kohsuke/github/SearchResult.java b/src/main/java/org/kohsuke/github/SearchResult.java
index ca2f621df..5d7588e38 100644
--- a/src/main/java/org/kohsuke/github/SearchResult.java
+++ b/src/main/java/org/kohsuke/github/SearchResult.java
@@ -11,10 +11,10 @@ package org.kohsuke.github;
 abstract class SearchResult<T> {
 
     /** The total count. */
-    int total_count;
+    int totalCount;
 
     /** The incomplete results. */
-    boolean incomplete_results;
+    boolean incompleteResults;
 
     /**
      * Wraps up the retrieved object and return them. Only called once.


Test patch:
diff --git a/src/test/java/org/kohsuke/github/AppTest.java b/src/test/java/org/kohsuke/github/AppTest.java
index 48ae46dbc..42f162202 100755
--- a/src/test/java/org/kohsuke/github/AppTest.java
+++ b/src/test/java/org/kohsuke/github/AppTest.java
@@ -336,6 +336,8 @@ public class AppTest extends AbstractGitHubWireMockTest {
             assertThat(actualStatus.getLogUrl(), equalTo(ghDeploymentStatus.getLogUrl()));
             assertThat(ghDeploymentStatus.getDeploymentUrl(), equalTo(deployment.getUrl()));
             assertThat(ghDeploymentStatus.getRepositoryUrl(), equalTo(repository.getUrl()));
+            assertThat(ghDeploymentStatus.getEnvironmentUrl().toString(), equalTo("http://www.github.com/envurl"));
+
         } finally {
             // deployment.delete();
             assert true;
diff --git a/src/test/java/org/kohsuke/github/ArchTests.java b/src/test/java/org/kohsuke/github/ArchTests.java
index fc4891f86..9b7e421c1 100644
--- a/src/test/java/org/kohsuke/github/ArchTests.java
+++ b/src/test/java/org/kohsuke/github/ArchTests.java
@@ -39,7 +39,6 @@ import static com.tngtech.archunit.core.domain.JavaClass.Predicates.assignableTo
 import static com.tngtech.archunit.core.domain.JavaClass.Predicates.resideInAPackage;
 import static com.tngtech.archunit.core.domain.JavaClass.Predicates.type;
 import static com.tngtech.archunit.core.domain.JavaMember.Predicates.declaredIn;
-import static com.tngtech.archunit.core.domain.JavaModifier.FINAL;
 import static com.tngtech.archunit.core.domain.JavaModifier.STATIC;
 import static com.tngtech.archunit.core.domain.properties.HasModifiers.Predicates.modifier;
 import static com.tngtech.archunit.core.domain.properties.HasName.Predicates.name;
@@ -48,6 +47,7 @@ import static com.tngtech.archunit.core.domain.properties.HasOwner.Predicates.Wi
 import static com.tngtech.archunit.core.domain.properties.HasParameterTypes.Predicates.rawParameterTypes;
 import static com.tngtech.archunit.lang.conditions.ArchConditions.*;
 import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes;
+import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.fields;
 import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses;
 import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noFields;
 import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noMethods;
@@ -73,6 +73,8 @@ public class ArchTests {
             .withImportOption(new ImportOption.DoNotIncludeJars())
             .importPackages("org.kohsuke.github");
 
+    private DescribedPredicate<JavaField> and;
+
     /**
      * Default constructor.
      */
@@ -94,13 +96,29 @@ public class ArchTests {
     public void testRequireFollowingNamingConvention() {
         final String reason = "This project follows standard java naming conventions and does not allow the use of underscores in names.";
 
-        final ArchRule fieldsNotFollowingConvention = noFields().that()
-                .arePublic()
-                .and(not(enumConstants()))
-                .and(not(modifier(STATIC).and(modifier(FINAL)).as("static final")))
-                .should(haveNamesContainingUnless("_"))
+        final ArchRule constantFieldsShouldFollowConvention = fields().that()
+                .areStatic()
+                .and()
+                .areFinal()
+                .should(haveNameMatching("[a-zA-Z$][a-zA-Z0-9$_]*"))
                 .because(reason);
 
+        final ArchRule enumsShouldFollowConvention = fields().that(enumConstants())
+                .and(not(declaredIn(GHCompare.Status.class)))
+                .should(haveNameMatching("[A-Z][A-Z0-9_]*"))
+                .because("This project follows standard java naming conventions for enums.");
+
+        var notStaticFinalFields = DescribedPredicate.<JavaField>not(modifier(STATIC).and(modifier(STATIC)));
+        var notEnumOrStaticFinalFields = DescribedPredicate.<JavaField>and(not(enumConstants()), notStaticFinalFields);
+
+        final ArchRule instanceFieldsShouldNotBePublic = fields().that(notEnumOrStaticFinalFields)
+                .should(notHaveModifier(JavaModifier.PUBLIC))
+                .because("This project does not allow public instance fields.");
+
+        final ArchRule instanceFieldsShouldFollowConvention = noFields().that(notEnumOrStaticFinalFields)
+                .should(haveNamesContainingUnless("_"))
+                .because("This project follows standard java naming conventions for fields.");
+
         @SuppressWarnings("AccessStaticViaInstance")
         final ArchRule methodsNotFollowingConvention = noMethods().that()
                 .arePublic()
@@ -122,7 +140,10 @@ public class ArchTests {
         final ArchRule classesNotFollowingConvention = noClasses().should(haveNamesContainingUnless("_"))
                 .because(reason);
 
-        fieldsNotFollowingConvention.check(classFiles);
+        enumsShouldFollowConvention.check(classFiles);
+        constantFieldsShouldFollowConvention.check(classFiles);
+        instanceFieldsShouldNotBePublic.check(classFiles);
+        instanceFieldsShouldFollowConvention.check(classFiles);
         methodsNotFollowingConvention.check(classFiles);
         classesNotFollowingConvention.check(classFiles);
     }
diff --git a/src/test/java/org/kohsuke/github/EnumTest.java b/src/test/java/org/kohsuke/github/EnumTest.java
index 86c406623..5a2df1ef8 100644
--- a/src/test/java/org/kohsuke/github/EnumTest.java
+++ b/src/test/java/org/kohsuke/github/EnumTest.java
@@ -27,7 +27,7 @@ public class EnumTest extends AbstractGitHubWireMockTest {
         assertThat(GHCheckRun.Conclusion.values().length, equalTo(9));
         assertThat(GHCheckRun.Status.values().length, equalTo(4));
 
-        assertThat(GHCommentAuthorAssociation.values().length, equalTo(8));
+        assertThat(GHCommentAuthorAssociation.values().length, equalTo(9));
 
         assertThat(GHCommitSearchBuilder.Sort.values().length, equalTo(2));
 
diff --git a/src/test/java/org/kohsuke/github/GHDeploymentTest.java b/src/test/java/org/kohsuke/github/GHDeploymentTest.java
index 56d8caa63..7170a0a38 100644
--- a/src/test/java/org/kohsuke/github/GHDeploymentTest.java
+++ b/src/test/java/org/kohsuke/github/GHDeploymentTest.java
@@ -43,6 +43,9 @@ public class GHDeploymentTest extends AbstractGitHubWireMockTest {
         assertThat(deployment.getOriginalEnvironment(), equalTo("production"));
         assertThat(deployment.isProductionEnvironment(), equalTo(false));
         assertThat(deployment.isTransientEnvironment(), equalTo(true));
+        assertThat(deployment.getStatusesUrl().toString(),
+                endsWith("/repos/hub4j-test-org/github-api/deployments/178653229/statuses"));
+        assertThat(deployment.getRepositoryUrl().toString(), endsWith("/repos/hub4j-test-org/github-api"));
     }
 
     /**
diff --git a/src/test/java/org/kohsuke/github/GHEventPayloadTest.java b/src/test/java/org/kohsuke/github/GHEventPayloadTest.java
index 179bd5192..05558e9bd 100644
--- a/src/test/java/org/kohsuke/github/GHEventPayloadTest.java
+++ b/src/test/java/org/kohsuke/github/GHEventPayloadTest.java
@@ -195,6 +195,8 @@ public class GHEventPayloadTest extends AbstractGitHubWireMockTest {
         assertThat(event.getIssue().getLabels().iterator().next().getName(), is("bug"));
         assertThat(event.getComment().getUser().getLogin(), is("baxterthehacker"));
         assertThat(event.getComment().getBody(), is("You are totally right! I'll get this fixed right away."));
+        assertThat(event.getComment().getAuthorAssociation(), equalTo(GHCommentAuthorAssociation.UNKNOWN));
+        assertThat(event.getComment().getBody(), is("You are totally right! I'll get this fixed right away."));
         assertThat(event.getRepository().getName(), is("public-repo"));
         assertThat(event.getRepository().getOwner().getLogin(), is("baxterthehacker"));
         assertThat(event.getSender().getLogin(), is("baxterthehacker"));
diff --git a/src/test/java/org/kohsuke/github/GHGistTest.java b/src/test/java/org/kohsuke/github/GHGistTest.java
index 14e02f1c2..1845fec6f 100644
--- a/src/test/java/org/kohsuke/github/GHGistTest.java
+++ b/src/test/java/org/kohsuke/github/GHGistTest.java
@@ -168,5 +168,10 @@ public class GHGistTest extends AbstractGitHubWireMockTest {
         assertThat(f.getType(), equalTo("text/markdown"));
         assertThat(f.getLanguage(), equalTo("Markdown"));
         assertThat(f.getContent(), containsString("### Keybase proof"));
+        assertThat(f.getRawUrl().toString(),
+                equalTo("https://gist.githubusercontent.com/rtyler/9903708/raw/2b68396d836af8c5b6ba905f27c4baf94ceb0ed3/keybase.md"));
+        assertThat(f.getFileName(), equalTo("keybase.md"));
+        assertThat(f.getSize(), equalTo(2131));
+        assertThat(f.isTruncated(), equalTo(false));
     }
 }
diff --git a/src/test/java/org/kohsuke/github/GHIssueTest.java b/src/test/java/org/kohsuke/github/GHIssueTest.java
index c3618f0cf..66734eea2 100644
--- a/src/test/java/org/kohsuke/github/GHIssueTest.java
+++ b/src/test/java/org/kohsuke/github/GHIssueTest.java
@@ -92,6 +92,7 @@ public class GHIssueTest extends AbstractGitHubWireMockTest {
         comments = issue.listComments().toList();
         assertThat(comments, hasSize(1));
         assertThat(comments, contains(hasProperty("body", equalTo("First comment"))));
+        assertThat(comments.get(0).getAuthorAssociation(), equalTo(GHCommentAuthorAssociation.NONE));
 
         comments = issue.queryComments().list().toList();
         assertThat(comments, hasSize(1));
diff --git a/src/test/java/org/kohsuke/github/GHProjectCardTest.java b/src/test/java/org/kohsuke/github/GHProjectCardTest.java
index f3494b8a6..f43ef4420 100644
--- a/src/test/java/org/kohsuke/github/GHProjectCardTest.java
+++ b/src/test/java/org/kohsuke/github/GHProjectCardTest.java
@@ -91,9 +91,14 @@ public class GHProjectCardTest extends AbstractGitHubWireMockTest {
         try {
             GHIssue issue = repo.createIssue("new-issue").body("With body").create();
             GHProjectCard card = column.createCard(issue);
+            assertThat(column.getProjectUrl(), equalTo(card.getProjectUrl()));
+
             assertThat(card.getContentUrl(), equalTo(issue.getUrl()));
             assertThat(card.getContent().getUrl(), equalTo(issue.getUrl()));
             assertThat(card.getContent().getRepository().getUrl(), equalTo(repo.getUrl()));
+            assertThat(card.getProjectUrl().toString(), endsWith("/projects/13495086"));
+            assertThat(card.getColumnUrl().toString(), endsWith("/projects/columns/16361848"));
+
         } finally {
             repo.delete();
         }
diff --git a/src/test/java/org/kohsuke/github/GHProjectTest.java b/src/test/java/org/kohsuke/github/GHProjectTest.java
index ffef245ca..0fc64878b 100644
--- a/src/test/java/org/kohsuke/github/GHProjectTest.java
+++ b/src/test/java/org/kohsuke/github/GHProjectTest.java
@@ -47,6 +47,8 @@ public class GHProjectTest extends AbstractGitHubWireMockTest {
         assertThat(project.getState(), equalTo(GHProject.ProjectState.OPEN));
         assertThat(project.getHtmlUrl().toString(), containsString("/orgs/hub4j-test-org/projects/"));
         assertThat(project.getUrl().toString(), containsString("/projects/"));
+        assertThat(project.getOwnerUrl().toString(), endsWith("/orgs/hub4j-test-org"));
+
     }
 
     /**
diff --git a/src/test/java/org/kohsuke/github/GHPullRequestTest.java b/src/test/java/org/kohsuke/github/GHPullRequestTest.java
index 09c47f5a6..fbc2d009c 100644
--- a/src/test/java/org/kohsuke/github/GHPullRequestTest.java
+++ b/src/test/java/org/kohsuke/github/GHPullRequestTest.java
@@ -16,6 +16,7 @@ import static org.hamcrest.Matchers.contains;
 import static org.hamcrest.Matchers.containsInAnyOrder;
 import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.empty;
+import static org.hamcrest.Matchers.endsWith;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasProperty;
 import static org.hamcrest.Matchers.hasSize;
@@ -126,6 +127,7 @@ public class GHPullRequestTest extends AbstractGitHubWireMockTest {
     public void pullRequestComment() throws Exception {
         String name = "createPullRequestComment";
         GHPullRequest p = getRepository().createPullRequest(name, "test/stable", "main", "## test");
+        assertThat(p.getIssueUrl().toString(), endsWith("/repos/hub4j-test-org/github-api/issues/461"));
 
         List<GHIssueComment> comments;
         comments = p.listComments().toList();
@@ -214,8 +216,39 @@ public class GHPullRequestTest extends AbstractGitHubWireMockTest {
         Optional<GHPullRequest> firstPR = builder.list().toList().stream().findFirst();
 
         try {
-            String val = firstPR.get().listCommits().toArray()[0].getApiUrl().toString();
-            assertThat(val, notNullValue());
+            GHPullRequestCommitDetail detail = firstPR.get().listCommits().toArray()[0];
+            assertThat(detail.getApiUrl().toString(), notNullValue());
+            assertThat(detail.getSha(), equalTo("2d29c787b46ce61b98a1c13e05e21ebc21f49dbf"));
+            assertThat(detail.getCommentsUrl().toString(),
+                    endsWith(
+                            "/repos/hub4j-test-org/github-api/commits/2d29c787b46ce61b98a1c13e05e21ebc21f49dbf/comments"));
+            assertThat(detail.getUrl().toString(),
+                    equalTo("https://github.com/hub4j-test-org/github-api/commit/2d29c787b46ce61b98a1c13e05e21ebc21f49dbf"));
+
+            GHPullRequestCommitDetail.Commit commit = detail.getCommit();
+            assertThat(commit, notNullValue());
+            assertThat(commit.getAuthor().getEmail(), equalTo("bitwiseman@gmail.com"));
+            assertThat(commit.getCommitter().getEmail(), equalTo("bitwiseman@gmail.com"));
+            assertThat(commit.getMessage(), equalTo("Update README"));
+            assertThat(commit.getUrl().toString(),
+                    endsWith("/repos/hub4j-test-org/github-api/git/commits/2d29c787b46ce61b98a1c13e05e21ebc21f49dbf"));
+            assertThat(commit.getComment_count(), equalTo(0));
+
+            GHPullRequestCommitDetail.Tree tree = commit.getTree();
+            assertThat(tree, notNullValue());
+            assertThat(tree.getSha(), equalTo("ce7a1ba95aba901cf08d9f8365410d290d6c23aa"));
+            assertThat(tree.getUrl().toString(),
+                    endsWith("/repos/hub4j-test-org/github-api/git/trees/ce7a1ba95aba901cf08d9f8365410d290d6c23aa"));
+
+            GHPullRequestCommitDetail.CommitPointer[] parents = detail.getParents();
+            assertThat(parents, notNullValue());
+            assertThat(parents.length, equalTo(1));
+            assertThat(parents[0].getSha(), equalTo("3a09d2de4a9a1322a0ba2c3e2f54a919ca8fe353"));
+            assertThat(parents[0].getHtml_url().toString(),
+                    equalTo("https://github.com/hub4j-test-org/github-api/commit/3a09d2de4a9a1322a0ba2c3e2f54a919ca8fe353"));
+            assertThat(parents[0].getUrl().toString(),
+                    endsWith("/repos/hub4j-test-org/github-api/commits/3a09d2de4a9a1322a0ba2c3e2f54a919ca8fe353"));
+
         } catch (GHFileNotFoundException e) {
             if (e.getMessage().contains("/issues/")) {
                 fail("Issued a request against the wrong path");
diff --git a/src/test/java/org/kohsuke/github/GHRepositoryTest.java b/src/test/java/org/kohsuke/github/GHRepositoryTest.java
index 2eaa197ae..302e94801 100644
--- a/src/test/java/org/kohsuke/github/GHRepositoryTest.java
+++ b/src/test/java/org/kohsuke/github/GHRepositoryTest.java
@@ -64,6 +64,7 @@ public class GHRepositoryTest extends AbstractGitHubWireMockTest {
     @Test
     public void sync() throws IOException {
         GHRepository r = getRepository();
+        assertThat(r.getForksCount(), equalTo(0));
         GHBranchSync sync = r.sync("main");
         assertThat(sync.getOwner().getFullName(), equalTo("hub4j-test-org/github-api"));
         assertThat(sync.getMessage(), equalTo("Successfully fetched and fast-forwarded from upstream github-api:main"));
@@ -137,6 +138,13 @@ public class GHRepositoryTest extends AbstractGitHubWireMockTest {
 
         String httpTransport = "https://github.com/hub4j-test-org/temp-testGetters.git";
         assertThat(r.getHttpTransportUrl(), equalTo(httpTransport));
+        assertThat(r.getGitTransportUrl(), equalTo("git://github.com/hub4j-test-org/temp-testGetters.git"));
+        assertThat(r.getSvnUrl(), equalTo("https://github.com/hub4j-test-org/temp-testGetters"));
+        assertThat(r.getMirrorUrl(), nullValue());
+        assertThat(r.getSshUrl(), equalTo("git@github.com:hub4j-test-org/temp-testGetters.git"));
+        assertThat(r.getHtmlUrl().toString(), equalTo("https://github.com/hub4j-test-org/temp-testGetters"));
+        assertThat(r.getOpenIssueCount(), equalTo(0));
+        assertThat(r.getSubscribersCount(), equalTo(7));
 
         assertThat(r.getName(), equalTo("temp-testGetters"));
         assertThat(r.getFullName(), equalTo("hub4j-test-org/temp-testGetters"));
@@ -635,6 +643,9 @@ public class GHRepositoryTest extends AbstractGitHubWireMockTest {
 
         GHPersonSet<GHUser> collabs = repo.getCollaborators();
         GHUser colabUser = collabs.byLogin("jimmysombrero");
+        assertThat(colabUser.getAvatarUrl(), equalTo("https://avatars3.githubusercontent.com/u/12157727?v=4"));
+        assertThat(colabUser.getHtmlUrl().toString(), equalTo("https://github.com/jimmysombrero"));
+        assertThat(colabUser.getLocation(), nullValue());
 
         assertThat(user.getName(), equalTo(colabUser.getName()));
     }
diff --git a/src/test/java/org/kohsuke/github/GitHubTest.java b/src/test/java/org/kohsuke/github/GitHubTest.java
index 8e27f8844..38bb67315 100644
--- a/src/test/java/org/kohsuke/github/GitHubTest.java
+++ b/src/test/java/org/kohsuke/github/GitHubTest.java
@@ -164,6 +164,10 @@ public class GitHubTest extends AbstractGitHubWireMockTest {
                 .order(GHDirection.DESC)
                 .list();
         GHContent c = r.iterator().next();
+        assertThat(c.getGitUrl(), endsWith("/repositories/167174/git/blobs/796fbcc808ca15bbe771f8c9c1a7bab3388f6128"));
+        assertThat(c.getHtmlUrl(),
+                endsWith(
+                        "https://github.com/jquery/jquery/blob/a684e6ba836f7c553968d7d026ed7941e1a612d8/src/attributes/classes.js"));
 
         // System.out.println(c.getName());
         assertThat(c.getDownloadUrl(), notNullValue());