Repository: andregasser/bigbone
Pull request #410 (2023-12-27 19:25:08)

Clean up endpoint definitions in methods classes
# Description

In this PR, I cleaned up how we refer to endpoints:

1. Ensure that all endpoints start _without_ a leading slash (`api/v1/…`, not `/api/v1/…`)
2. Ensure that all endpoints defined as a class-level `val` are named `endpoint` (or `endpointV1` and `endpointV2` if we have multiple) so that all method classes follow mostly the same structure
3. Ensure that all methods define their endpoints as class-level `val`s

Relates to #396

# Type of Change

- Refactoring and cleanup

# Breaking Changes

- None

# How Has This Been Tested?

I ran existing unit tests through `gradle check`

# Mandatory Checklist

- [x] I ran `gradle check` and there were no errors reported
- [x] I have performed a self-review of my code
- [ ] I have added tests that prove my fix is effective or that my feature works
- [x] All tests pass locally with my changes
- [ ] I have added KDoc documentation to all public methods


codecov[bot]: ## [Codecov](https://app.codecov.io/gh/andregasser/bigbone/pull/410?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Andr%C3%A9+Gasser) Report
Attention: `9 lines` in your changes are missing coverage. Please review.
> Comparison is base [(`6960044`)](https://app.codecov.io/gh/andregasser/bigbone/commit/69600449efe62e891aff0c9fdaba56692dd147ce?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Andr%C3%A9+Gasser) 50.01% compared to head [(`ba87188`)](https://app.codecov.io/gh/andregasser/bigbone/pull/410?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Andr%C3%A9+Gasser) 50.21%.

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


```diff
@@             Coverage Diff              @@
##             master     #410      +/-   ##
============================================
+ Coverage     50.01%   50.21%   +0.19%     
  Complexity      620      620              
============================================
  Files           155      155              
  Lines          4243     4264      +21     
  Branches        269      269              
============================================
+ Hits           2122     2141      +19     
- Misses         1885     1887       +2     
  Partials        236      236              
```

| [Files](https://app.codecov.io/gh/andregasser/bigbone/pull/410?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Andr%C3%A9+Gasser) | Coverage Δ | |
|---|---|---|
| [...n/social/bigbone/api/method/AnnouncementMethods.kt](https://app.codecov.io/gh/andregasser/bigbone/pull/410?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Andr%C3%A9+Gasser#diff-YmlnYm9uZS9zcmMvbWFpbi9rb3RsaW4vc29jaWFsL2JpZ2JvbmUvYXBpL21ldGhvZC9Bbm5vdW5jZW1lbnRNZXRob2RzLmt0) | `90.47% <100.00%> (ø)` | |
| [...ain/kotlin/social/bigbone/api/method/AppMethods.kt](https://app.codecov.io/gh/andregasser/bigbone/pull/410?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Andr%C3%A9+Gasser#diff-YmlnYm9uZS9zcmMvbWFpbi9rb3RsaW4vc29jaWFsL2JpZ2JvbmUvYXBpL21ldGhvZC9BcHBNZXRob2RzLmt0) | `75.00% <100.00%> (+1.31%)` | :arrow_up: |
| [...n/kotlin/social/bigbone/api/method/BlockMethods.kt](https://app.codecov.io/gh/andregasser/bigbone/pull/410?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Andr%C3%A9+Gasser#diff-YmlnYm9uZS9zcmMvbWFpbi9rb3RsaW4vc29jaWFsL2JpZ2JvbmUvYXBpL21ldGhvZC9CbG9ja01ldGhvZHMua3Q=) | `100.00% <100.00%> (ø)` | |
| [...otlin/social/bigbone/api/method/BookmarkMethods.kt](https://app.codecov.io/gh/andregasser/bigbone/pull/410?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Andr%C3%A9+Gasser#diff-YmlnYm9uZS9zcmMvbWFpbi9rb3RsaW4vc29jaWFsL2JpZ2JvbmUvYXBpL21ldGhvZC9Cb29rbWFya01ldGhvZHMua3Q=) | `100.00% <100.00%> (ø)` | |
| [...n/social/bigbone/api/method/ConversationMethods.kt](https://app.codecov.io/gh/andregasser/bigbone/pull/410?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Andr%C3%A9+Gasser#diff-YmlnYm9uZS9zcmMvbWFpbi9rb3RsaW4vc29jaWFsL2JpZ2JvbmUvYXBpL21ldGhvZC9Db252ZXJzYXRpb25NZXRob2RzLmt0) | `92.85% <100.00%> (+0.54%)` | :arrow_up: |
| [...in/social/bigbone/api/method/CustomEmojiMethods.kt](https://app.codecov.io/gh/andregasser/bigbone/pull/410?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Andr%C3%A9+Gasser#diff-YmlnYm9uZS9zcmMvbWFpbi9rb3RsaW4vc29jaWFsL2JpZ2JvbmUvYXBpL21ldGhvZC9DdXN0b21FbW9qaU1ldGhvZHMua3Q=) | `100.00% <100.00%> (ø)` | |
| [...tlin/social/bigbone/api/method/DirectoryMethods.kt](https://app.codecov.io/gh/andregasser/bigbone/pull/410?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Andr%C3%A9+Gasser#diff-YmlnYm9uZS9zcmMvbWFpbi9rb3RsaW4vc29jaWFsL2JpZ2JvbmUvYXBpL21ldGhvZC9EaXJlY3RvcnlNZXRob2RzLmt0) | `84.21% <100.00%> (+0.87%)` | :arrow_up: |
| [...in/social/bigbone/api/method/DomainBlockMethods.kt](https://app.codecov.io/gh/andregasser/bigbone/pull/410?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Andr%C3%A9+Gasser#diff-YmlnYm9uZS9zcmMvbWFpbi9rb3RsaW4vc29jaWFsL2JpZ2JvbmUvYXBpL21ldGhvZC9Eb21haW5CbG9ja01ldGhvZHMua3Q=) | `100.00% <100.00%> (ø)` | |
| [...n/kotlin/social/bigbone/api/method/EmailMethods.kt](https://app.codecov.io/gh/andregasser/bigbone/pull/410?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Andr%C3%A9+Gasser#diff-YmlnYm9uZS9zcmMvbWFpbi9rb3RsaW4vc29jaWFsL2JpZ2JvbmUvYXBpL21ldGhvZC9FbWFpbE1ldGhvZHMua3Q=) | `100.00% <100.00%> (ø)` | |
| [...in/social/bigbone/api/method/EndorsementMethods.kt](https://app.codecov.io/gh/andregasser/bigbone/pull/410?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Andr%C3%A9+Gasser#diff-YmlnYm9uZS9zcmMvbWFpbi9rb3RsaW4vc29jaWFsL2JpZ2JvbmUvYXBpL21ldGhvZC9FbmRvcnNlbWVudE1ldGhvZHMua3Q=) | `100.00% <100.00%> (ø)` | |
| ... and [31 more](https://app.codecov.io/gh/andregasser/bigbone/pull/410?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Andr%C3%A9+Gasser) | |

</details>

Patch:
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/AccountMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/AccountMethods.kt
index 0b5569c..501552a 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/AccountMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/AccountMethods.kt
@@ -18,6 +18,9 @@ import java.time.Duration
  * @see <a href="https://docs.joinmastodon.org/methods/accounts/">Mastodon accounts API methods</a>
  */
 class AccountMethods(private val client: MastodonClient) {
+
+    private val endpoint = "api/v1/accounts"
+
     /**
      * Register an account.
      * @param username The desired username for the account
@@ -38,7 +41,7 @@ class AccountMethods(private val client: MastodonClient) {
         reason: String?
     ): MastodonRequest<Token> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/accounts",
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("username", username)
@@ -58,7 +61,7 @@ class AccountMethods(private val client: MastodonClient) {
      */
     fun getAccount(accountId: String): MastodonRequest<Account> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/accounts/$accountId",
+            endpoint = "$endpoint/$accountId",
             method = MastodonClient.Method.GET
         )
     }
@@ -69,7 +72,7 @@ class AccountMethods(private val client: MastodonClient) {
      */
     fun verifyCredentials(): MastodonRequest<CredentialAccount> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/accounts/verify_credentials",
+            endpoint = "$endpoint/verify_credentials",
             method = MastodonClient.Method.GET
         )
     }
@@ -167,7 +170,7 @@ class AccountMethods(private val client: MastodonClient) {
         defaultLanguage: String?
     ): MastodonRequest<CredentialAccount> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/accounts/update_credentials",
+            endpoint = "$endpoint/update_credentials",
             method = MastodonClient.Method.PATCH,
             parameters = Parameters().apply {
                 displayName?.let { append("display_name", displayName) }
@@ -199,7 +202,7 @@ class AccountMethods(private val client: MastodonClient) {
     @JvmOverloads
     fun getFollowers(accountId: String, range: Range = Range()): MastodonRequest<Pageable<Account>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/accounts/$accountId/followers",
+            endpoint = "$endpoint/$accountId/followers",
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
@@ -214,7 +217,7 @@ class AccountMethods(private val client: MastodonClient) {
     @JvmOverloads
     fun getFollowing(accountId: String, range: Range = Range()): MastodonRequest<Pageable<Account>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/accounts/$accountId/following",
+            endpoint = "$endpoint/$accountId/following",
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
@@ -244,7 +247,7 @@ class AccountMethods(private val client: MastodonClient) {
         range: Range = Range()
     ): MastodonRequest<Pageable<Status>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/accounts/$accountId/statuses",
+            endpoint = "$endpoint/$accountId/statuses",
             method = MastodonClient.Method.GET,
             parameters = range.toParameters().apply {
                 if (onlyMedia) append("only_media", true)
@@ -275,7 +278,7 @@ class AccountMethods(private val client: MastodonClient) {
         filterForLanguages: List<String>? = null
     ): MastodonRequest<Relationship> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/accounts/$accountId/follow",
+            endpoint = "$endpoint/$accountId/follow",
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 includeReblogs?.let { append("reblogs", includeReblogs) }
@@ -292,7 +295,7 @@ class AccountMethods(private val client: MastodonClient) {
      */
     fun unfollowAccount(accountId: String): MastodonRequest<Relationship> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/accounts/$accountId/unfollow",
+            endpoint = "$endpoint/$accountId/unfollow",
             method = MastodonClient.Method.POST
         )
     }
@@ -304,7 +307,7 @@ class AccountMethods(private val client: MastodonClient) {
      */
     fun blockAccount(accountId: String): MastodonRequest<Relationship> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/accounts/$accountId/block",
+            endpoint = "$endpoint/$accountId/block",
             method = MastodonClient.Method.POST
         )
     }
@@ -316,7 +319,7 @@ class AccountMethods(private val client: MastodonClient) {
      */
     fun unblockAccount(accountId: String): MastodonRequest<Relationship> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/accounts/$accountId/unblock",
+            endpoint = "$endpoint/$accountId/unblock",
             method = MastodonClient.Method.POST
         )
     }
@@ -338,7 +341,7 @@ class AccountMethods(private val client: MastodonClient) {
         muteDuration: Duration? = null
     ): MastodonRequest<Relationship> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/accounts/$accountId/mute",
+            endpoint = "$endpoint/$accountId/mute",
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 muteNotifications?.let { append("notifications", muteNotifications) }
@@ -354,7 +357,7 @@ class AccountMethods(private val client: MastodonClient) {
      */
     fun unmuteAccount(accountId: String): MastodonRequest<Relationship> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/accounts/$accountId/unmute",
+            endpoint = "$endpoint/$accountId/unmute",
             method = MastodonClient.Method.POST
         )
     }
@@ -373,7 +376,7 @@ class AccountMethods(private val client: MastodonClient) {
         includeSuspended: Boolean? = null
     ): MastodonRequest<List<Relationship>> {
         return client.getMastodonRequestForList(
-            endpoint = "api/v1/accounts/relationships",
+            endpoint = "$endpoint/relationships",
             method = MastodonClient.Method.GET,
             parameters = Parameters().apply {
                 append("id", accountIds)
@@ -402,7 +405,7 @@ class AccountMethods(private val client: MastodonClient) {
         attemptWebFingerLookup: Boolean? = null
     ): MastodonRequest<List<Account>> {
         return client.getMastodonRequestForList(
-            endpoint = "api/v1/accounts/search",
+            endpoint = "$endpoint/search",
             method = MastodonClient.Method.GET,
             parameters = Parameters().apply {
                 append("q", query)
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/AnnouncementMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/AnnouncementMethods.kt
index c7a0776..cfe444b 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/AnnouncementMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/AnnouncementMethods.kt
@@ -12,7 +12,7 @@ import social.bigbone.api.exception.BigBoneRequestException
  */
 class AnnouncementMethods(private val client: MastodonClient) {
 
-    private val announcementsEndpoint = "api/v1/announcements"
+    private val endpoint = "api/v1/announcements"
 
     /**
      * See all currently active announcements set by admins.
@@ -24,7 +24,7 @@ class AnnouncementMethods(private val client: MastodonClient) {
         withDismissed: Boolean = false
     ): MastodonRequest<List<Announcement>> {
         return client.getMastodonRequestForList(
-            endpoint = announcementsEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = Parameters()
                 .append("with_dismissed", withDismissed)
@@ -39,7 +39,7 @@ class AnnouncementMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun dismissAnnouncement(announcementId: String) {
         client.performAction(
-            endpoint = "$announcementsEndpoint/$announcementId/dismiss",
+            endpoint = "$endpoint/$announcementId/dismiss",
             method = MastodonClient.Method.POST
         )
     }
@@ -56,7 +56,7 @@ class AnnouncementMethods(private val client: MastodonClient) {
         announcementId: String
     ) {
         client.performAction(
-            endpoint = "$announcementsEndpoint/$announcementId/reactions/$emojiName",
+            endpoint = "$endpoint/$announcementId/reactions/$emojiName",
             method = MastodonClient.Method.PUT
         )
     }
@@ -73,7 +73,7 @@ class AnnouncementMethods(private val client: MastodonClient) {
         announcementId: String
     ) {
         client.performAction(
-            endpoint = "$announcementsEndpoint/$announcementId/reactions/$emojiName",
+            endpoint = "$endpoint/$announcementId/reactions/$emojiName",
             method = MastodonClient.Method.DELETE
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/AppMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/AppMethods.kt
index 4f80558..03e5158 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/AppMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/AppMethods.kt
@@ -11,6 +11,9 @@ import social.bigbone.api.entity.Application
  * @see <a href="https://docs.joinmastodon.org/methods/apps/">Mastodon apps API methods</a>
  */
 class AppMethods(private val client: MastodonClient) {
+
+    private val endpoint = "api/v1/apps"
+
     /**
      * Create a new application to obtain OAuth2 credentials.
      * @param clientName A name for your application
@@ -27,7 +30,7 @@ class AppMethods(private val client: MastodonClient) {
         scope: Scope? = null
     ): MastodonRequest<Application> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/apps",
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("client_name", clientName)
@@ -50,7 +53,7 @@ class AppMethods(private val client: MastodonClient) {
      */
     fun verifyCredentials(): MastodonRequest<Application> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/apps/verify_credentials",
+            endpoint = "$endpoint/verify_credentials",
             method = MastodonClient.Method.GET
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/BlockMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/BlockMethods.kt
index 0e57acd..aff12bd 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/BlockMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/BlockMethods.kt
@@ -11,6 +11,9 @@ import social.bigbone.api.entity.Account
  * @see <a href="https://docs.joinmastodon.org/methods/blocks/">Mastodon blocks API methods</a>
  */
 class BlockMethods(private val client: MastodonClient) {
+
+    private val endpoint = "api/v1/blocks"
+
     /**
      * View your blocks. Blocking and unblocking is achieved via accounts methods.
      * @param range optional Range for the pageable return value
@@ -19,7 +22,7 @@ class BlockMethods(private val client: MastodonClient) {
     @JvmOverloads
     fun getBlocks(range: Range = Range()): MastodonRequest<Pageable<Account>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/blocks",
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/BookmarkMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/BookmarkMethods.kt
index 349b67c..e9c9a18 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/BookmarkMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/BookmarkMethods.kt
@@ -11,6 +11,9 @@ import social.bigbone.api.entity.Status
  * @see <a href="https://docs.joinmastodon.org/methods/bookmarks/">Mastodon bookmarks API methods</a>
  */
 class BookmarkMethods(private val client: MastodonClient) {
+
+    private val endpoint = "api/v1/bookmarks"
+
     /**
      * View bookmarked statuses.
      * @param range optional Range for the pageable return value
@@ -19,7 +22,7 @@ class BookmarkMethods(private val client: MastodonClient) {
     @JvmOverloads
     fun getBookmarks(range: Range = Range()): MastodonRequest<Pageable<Status>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/bookmarks",
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/ConversationMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/ConversationMethods.kt
index 2338fcc..9ec872c 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/ConversationMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/ConversationMethods.kt
@@ -11,6 +11,9 @@ import social.bigbone.api.entity.Conversation
  * @see <a href="https://docs.joinmastodon.org/methods/conversations/">Mastodon conversations API methods</a>
  */
 class ConversationMethods(private val client: MastodonClient) {
+
+    private val endpoint = "api/v1/conversations"
+
     /**
      * View your direct conversations with other participants.
      * @param range optional Range for the pageable return value
@@ -19,7 +22,7 @@ class ConversationMethods(private val client: MastodonClient) {
     @JvmOverloads
     fun getConversations(range: Range = Range()): MastodonRequest<Pageable<Conversation>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/conversations",
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
@@ -32,7 +35,7 @@ class ConversationMethods(private val client: MastodonClient) {
      */
     fun deleteConversation(conversationId: String) {
         client.performAction(
-            endpoint = "api/v1/conversations/$conversationId",
+            endpoint = "$endpoint/$conversationId",
             method = MastodonClient.Method.DELETE
         )
     }
@@ -44,7 +47,7 @@ class ConversationMethods(private val client: MastodonClient) {
      */
     fun markConversationAsRead(conversationId: String): MastodonRequest<Conversation> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/conversations/$conversationId/read",
+            endpoint = "$endpoint/$conversationId/read",
             method = MastodonClient.Method.POST
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/CustomEmojiMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/CustomEmojiMethods.kt
index a690376..663d249 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/CustomEmojiMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/CustomEmojiMethods.kt
@@ -11,7 +11,7 @@ import social.bigbone.api.entity.CustomEmoji
  */
 class CustomEmojiMethods(private val client: MastodonClient) {
 
-    private val customEmojisEndpoint = "api/v1/custom_emojis"
+    private val endpoint = "api/v1/custom_emojis"
 
     /**
      * Returns custom emojis that are available on the server.
@@ -19,7 +19,7 @@ class CustomEmojiMethods(private val client: MastodonClient) {
      */
     fun getAllCustomEmojis(): MastodonRequest<List<CustomEmoji>> {
         return client.getMastodonRequestForList(
-            endpoint = customEmojisEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.GET
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/DirectoryMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/DirectoryMethods.kt
index 3c7cea0..59c4aa7 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/DirectoryMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/DirectoryMethods.kt
@@ -11,6 +11,8 @@ import social.bigbone.api.entity.Account
  */
 class DirectoryMethods(private val client: MastodonClient) {
 
+    private val endpoint = "api/v1/directory"
+
     /**
      * When listing, use [AccountOrder.ACTIVE] to sort by most recently posted statuses or [AccountOrder.NEW] to sort
      * by most recently created profiles.
@@ -37,7 +39,7 @@ class DirectoryMethods(private val client: MastodonClient) {
         limit: Int? = null
     ): MastodonRequest<List<Account>> {
         return client.getMastodonRequestForList(
-            endpoint = "api/v1/directory",
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = Parameters().apply {
                 append("local", local)
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/DomainBlockMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/DomainBlockMethods.kt
index 28bbb45..b5947ee 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/DomainBlockMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/DomainBlockMethods.kt
@@ -11,7 +11,7 @@ import social.bigbone.api.Range
  */
 class DomainBlockMethods(private val client: MastodonClient) {
 
-    private val domainBlocksEndpoint = "/api/v1/domain_blocks"
+    private val endpoint = "api/v1/domain_blocks"
 
     /**
      * View domains the user has blocked.
@@ -24,7 +24,7 @@ class DomainBlockMethods(private val client: MastodonClient) {
         range: Range = Range()
     ): MastodonRequest<Pageable<String>> {
         return client.getPageableMastodonRequest<String>(
-            endpoint = domainBlocksEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
@@ -46,7 +46,7 @@ class DomainBlockMethods(private val client: MastodonClient) {
         require(!domain.contains(' ')) { "domain must not contain spaces" }
 
         return client.performAction(
-            endpoint = domainBlocksEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.POST
         )
     }
@@ -66,7 +66,7 @@ class DomainBlockMethods(private val client: MastodonClient) {
         require(!domain.contains(' ')) { "domain must not contain spaces" }
 
         return client.performAction(
-            endpoint = domainBlocksEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.DELETE
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/EmailMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/EmailMethods.kt
index c4e8ec3..3fa3bb1 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/EmailMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/EmailMethods.kt
@@ -9,7 +9,7 @@ import social.bigbone.Parameters
  */
 class EmailMethods(private val client: MastodonClient) {
 
-    private val emailsEndpoint = "api/v1/emails"
+    private val endpoint = "api/v1/emails"
 
     /**
      * Request a new confirmation email for an unconfirmed user, potentially to a new email address.
@@ -23,7 +23,7 @@ class EmailMethods(private val client: MastodonClient) {
     @JvmOverloads
     fun resendConfirmationEmail(emailAddress: String? = null) {
         client.performAction(
-            endpoint = "$emailsEndpoint/confirmations",
+            endpoint = "$endpoint/confirmations",
             method = MastodonClient.Method.POST,
             parameters = emailAddress?.let { Parameters().append("email", emailAddress) }
         )
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/EndorsementMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/EndorsementMethods.kt
index ed64731..4c6b326 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/EndorsementMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/EndorsementMethods.kt
@@ -12,7 +12,7 @@ import social.bigbone.api.entity.Account
  */
 class EndorsementMethods(private val client: MastodonClient) {
 
-    private val endorsementsEndpoint = "/api/v1/endorsements"
+    private val endpoint = "api/v1/endorsements"
 
     /**
      * Accounts that the user is currently featuring on their profile.
@@ -25,7 +25,7 @@ class EndorsementMethods(private val client: MastodonClient) {
         range: Range = Range()
     ): MastodonRequest<Pageable<Account>> {
         return client.getPageableMastodonRequest<Account>(
-            endpoint = endorsementsEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/FavouriteMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/FavouriteMethods.kt
index 1469333..9cce737 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/FavouriteMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/FavouriteMethods.kt
@@ -12,6 +12,8 @@ import social.bigbone.api.entity.Status
  */
 class FavouriteMethods(private val client: MastodonClient) {
 
+    private val endpoint = "api/v1/favourites"
+
     /**
      * View your favourites. Favouring and unfavouring is achieved via statuses methods.
      * @param range optional Range for the pageable return value
@@ -20,7 +22,7 @@ class FavouriteMethods(private val client: MastodonClient) {
     @JvmOverloads
     fun getFavourites(range: Range = Range()): MastodonRequest<Pageable<Status>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/favourites",
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/FeaturedTagMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/FeaturedTagMethods.kt
index 306570b..3e5ee9d 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/FeaturedTagMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/FeaturedTagMethods.kt
@@ -13,7 +13,7 @@ import social.bigbone.api.exception.BigBoneRequestException
  */
 class FeaturedTagMethods(private val client: MastodonClient) {
 
-    private val featuredTagsEndpoint = "api/v1/featured_tags"
+    private val endpoint = "api/v1/featured_tags"
 
     /**
      * List all hashtags featured on your profile.
@@ -21,7 +21,7 @@ class FeaturedTagMethods(private val client: MastodonClient) {
      */
     fun getFeaturedTags(): MastodonRequest<List<FeaturedTag>> {
         return client.getMastodonRequestForList(
-            endpoint = featuredTagsEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.GET
         )
     }
@@ -37,7 +37,7 @@ class FeaturedTagMethods(private val client: MastodonClient) {
         require(!tagName.contains('#')) { "Tag name to be featured must not contain '#'" }
 
         return client.getMastodonRequest(
-            endpoint = featuredTagsEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().append("name", tagName)
         )
@@ -54,7 +54,7 @@ class FeaturedTagMethods(private val client: MastodonClient) {
         require(tagId.isNotBlank()) { "Tag ID must not be blank" }
 
         client.performAction(
-            endpoint = featuredTagsEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.DELETE,
             parameters = Parameters().append("id", tagId)
         )
@@ -66,7 +66,7 @@ class FeaturedTagMethods(private val client: MastodonClient) {
      */
     fun getSuggestedTags(): MastodonRequest<List<Tag>> {
         return client.getMastodonRequestForList(
-            endpoint = "$featuredTagsEndpoint/suggestions",
+            endpoint = "$endpoint/suggestions",
             method = MastodonClient.Method.GET
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/FilterMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/FilterMethods.kt
index 2e6226b..44cbbe4 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/FilterMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/FilterMethods.kt
@@ -13,6 +13,9 @@ import social.bigbone.api.exception.BigBoneRequestException
  * @see <a href="https://docs.joinmastodon.org/methods/filters/">Mastodon filters API methods</a>
  */
 class FilterMethods(private val client: MastodonClient) {
+
+    private val endpoint = "api/v2/filters"
+
     /**
      * Obtain a list of all filter groups for the current user.
      * @see <a href="https://docs.joinmastodon.org/methods/filters/#get">Mastodon API documentation: methods/filters/#get</a>
@@ -20,7 +23,7 @@ class FilterMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun listFilters(): MastodonRequest<List<Filter>> {
         return client.getMastodonRequestForList(
-            endpoint = "api/v2/filters",
+            endpoint = endpoint,
             method = MastodonClient.Method.GET
         )
     }
@@ -57,7 +60,7 @@ class FilterMethods(private val client: MastodonClient) {
         filterAction: Filter.FilterAction = Filter.FilterAction.WARN
     ): MastodonRequest<Filter> {
         return client.getMastodonRequest(
-            endpoint = "api/v2/filters",
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("title", title)
@@ -104,7 +107,7 @@ class FilterMethods(private val client: MastodonClient) {
         keywordsToRemove: List<FilterKeyword>? = null
     ): MastodonRequest<Filter> {
         return client.getMastodonRequest(
-            endpoint = "api/v2/filters/$filterId",
+            endpoint = "$endpoint/$filterId",
             method = MastodonClient.Method.PUT,
             parameters = Parameters().apply {
                 title?.let {
@@ -153,7 +156,7 @@ class FilterMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun deleteFilter(filterId: String) {
         client.performAction(
-            endpoint = "api/v2/filters/$filterId",
+            endpoint = "$endpoint/$filterId",
             method = MastodonClient.Method.DELETE
         )
     }
@@ -166,7 +169,7 @@ class FilterMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun listKeywords(filterId: String): MastodonRequest<List<FilterKeyword>> {
         return client.getMastodonRequestForList(
-            endpoint = "api/v2/filters/$filterId/keywords",
+            endpoint = "$endpoint/$filterId/keywords",
             method = MastodonClient.Method.GET
         )
     }
@@ -180,7 +183,7 @@ class FilterMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun addKeyword(filterId: String, filterKeyword: FilterKeyword): MastodonRequest<FilterKeyword> {
         return client.getMastodonRequest(
-            endpoint = "api/v2/filters/$filterId/keywords",
+            endpoint = "$endpoint/$filterId/keywords",
             method = MastodonClient.Method.POST,
             Parameters().apply {
                 append("keyword", filterKeyword.keyword)
@@ -197,7 +200,7 @@ class FilterMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun viewKeyword(keywordId: String): MastodonRequest<FilterKeyword> {
         return client.getMastodonRequest(
-            endpoint = "api/v2/filters/keywords/$keywordId",
+            endpoint = "$endpoint/keywords/$keywordId",
             method = MastodonClient.Method.GET
         )
     }
@@ -210,7 +213,7 @@ class FilterMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun updateKeyword(filterKeyword: FilterKeyword): MastodonRequest<FilterKeyword> {
         return client.getMastodonRequest(
-            endpoint = "api/v2/filters/keywords/${filterKeyword.id}",
+            endpoint = "$endpoint/keywords/${filterKeyword.id}",
             method = MastodonClient.Method.PUT,
             Parameters().apply {
                 append("keyword", filterKeyword.keyword)
@@ -227,7 +230,7 @@ class FilterMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun deleteKeyword(keywordId: String) {
         client.performAction(
-            endpoint = "api/v2/filters/keywords/$keywordId",
+            endpoint = "$endpoint/keywords/$keywordId",
             method = MastodonClient.Method.DELETE
         )
     }
@@ -240,7 +243,7 @@ class FilterMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun listStatusFilters(filterId: String): MastodonRequest<List<FilterStatus>> {
         return client.getMastodonRequestForList(
-            endpoint = "api/v2/filters/$filterId/statuses",
+            endpoint = "$endpoint/$filterId/statuses",
             method = MastodonClient.Method.GET
         )
     }
@@ -252,7 +255,7 @@ class FilterMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun addStatusToFilter(filterId: String, statusId: String): MastodonRequest<FilterStatus> {
         return client.getMastodonRequest(
-            endpoint = "api/v2/filters/$filterId/statuses",
+            endpoint = "$endpoint/$filterId/statuses",
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("status_id", statusId)
@@ -268,7 +271,7 @@ class FilterMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun viewStatusFilter(filterStatusId: String): MastodonRequest<FilterStatus> {
         return client.getMastodonRequest(
-            endpoint = "api/v2/filters/statuses/$filterStatusId",
+            endpoint = "$endpoint/statuses/$filterStatusId",
             method = MastodonClient.Method.GET
         )
     }
@@ -281,7 +284,7 @@ class FilterMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun removeStatusFromFilter(filterStatusId: String): MastodonRequest<FilterStatus> {
         return client.getMastodonRequest(
-            endpoint = "api/v2/filters/statuses/$filterStatusId",
+            endpoint = "$endpoint/statuses/$filterStatusId",
             method = MastodonClient.Method.DELETE
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/FollowRequestMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/FollowRequestMethods.kt
index 0745586..28d74a8 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/FollowRequestMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/FollowRequestMethods.kt
@@ -14,6 +14,8 @@ import social.bigbone.api.exception.BigBoneRequestException
  */
 class FollowRequestMethods(private val client: MastodonClient) {
 
+    private val endpoint = "api/v1/follow_requests"
+
     /**
      * View pending follow requests.
      * @param range optional Range for the pageable return value
@@ -22,7 +24,7 @@ class FollowRequestMethods(private val client: MastodonClient) {
     @JvmOverloads
     fun getFollowRequests(range: Range = Range()): MastodonRequest<Pageable<Account>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/follow_requests",
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
@@ -36,7 +38,7 @@ class FollowRequestMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun authorizeFollowRequest(accountId: String): MastodonRequest<Relationship> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/follow_requests/$accountId/authorize",
+            endpoint = "$endpoint/$accountId/authorize",
             method = MastodonClient.Method.POST
         )
     }
@@ -49,7 +51,7 @@ class FollowRequestMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun rejectFollowRequest(accountId: String): MastodonRequest<Relationship> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/follow_requests/$accountId/reject",
+            endpoint = "$endpoint/$accountId/reject",
             method = MastodonClient.Method.POST
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/FollowedTagMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/FollowedTagMethods.kt
index 3ddcf8c..dde0403 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/FollowedTagMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/FollowedTagMethods.kt
@@ -13,7 +13,7 @@ import social.bigbone.api.entity.Tag
  */
 class FollowedTagMethods(private val client: MastodonClient) {
 
-    private val followedTagsEndpoint = "api/v1/followed_tags"
+    private val endpoint = "api/v1/followed_tags"
 
     /**
      * View your followed hashtags.
@@ -24,7 +24,7 @@ class FollowedTagMethods(private val client: MastodonClient) {
     @JvmOverloads
     fun viewAllFollowedTags(range: Range = Range()): MastodonRequest<Pageable<Tag>> {
         return client.getPageableMastodonRequest<Tag>(
-            endpoint = followedTagsEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/InstanceMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/InstanceMethods.kt
index dd44e22..b5069a8 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/InstanceMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/InstanceMethods.kt
@@ -16,8 +16,8 @@ import social.bigbone.api.entity.Rule
  */
 class InstanceMethods(private val client: MastodonClient) {
 
-    private val instanceEndpointV1 = "/api/v1/instance"
-    private val instanceEndpointV2 = "/api/v2/instance"
+    private val endpointV1 = "api/v1/instance"
+    private val endpointV2 = "api/v2/instance"
 
     /**
      * Obtain general information about the server.
@@ -25,7 +25,7 @@ class InstanceMethods(private val client: MastodonClient) {
      */
     fun getInstance(): MastodonRequest<Instance> {
         return client.getMastodonRequest(
-            endpoint = instanceEndpointV2,
+            endpoint = endpointV2,
             method = MastodonClient.Method.GET
         )
     }
@@ -41,7 +41,7 @@ class InstanceMethods(private val client: MastodonClient) {
     )
     fun getInstanceV1(): MastodonRequest<InstanceV1> {
         return client.getMastodonRequest(
-            endpoint = instanceEndpointV1,
+            endpoint = endpointV1,
             method = MastodonClient.Method.GET
         )
     }
@@ -52,7 +52,7 @@ class InstanceMethods(private val client: MastodonClient) {
      */
     fun getPeers(): MastodonRequest<List<String>> {
         return client.getMastodonRequestForList(
-            endpoint = "$instanceEndpointV1/peers",
+            endpoint = "$endpointV1/peers",
             method = MastodonClient.Method.GET
         )
     }
@@ -63,7 +63,7 @@ class InstanceMethods(private val client: MastodonClient) {
      */
     fun getActivity(): MastodonRequest<List<InstanceActivity>> {
         return client.getMastodonRequestForList<InstanceActivity>(
-            endpoint = "$instanceEndpointV1/activity",
+            endpoint = "$endpointV1/activity",
             method = MastodonClient.Method.GET
         )
     }
@@ -74,7 +74,7 @@ class InstanceMethods(private val client: MastodonClient) {
      */
     fun getRules(): MastodonRequest<List<Rule>> {
         return client.getMastodonRequestForList<Rule>(
-            endpoint = "$instanceEndpointV1/rules",
+            endpoint = "$endpointV1/rules",
             method = MastodonClient.Method.GET
         )
     }
@@ -86,7 +86,7 @@ class InstanceMethods(private val client: MastodonClient) {
      */
     fun getBlockedDomains(): MastodonRequest<List<DomainBlock>> {
         return client.getMastodonRequestForList<DomainBlock>(
-            endpoint = "$instanceEndpointV1/domain_blocks",
+            endpoint = "$endpointV1/domain_blocks",
             method = MastodonClient.Method.GET
         )
     }
@@ -98,7 +98,7 @@ class InstanceMethods(private val client: MastodonClient) {
      */
     fun getExtendedDescription(): MastodonRequest<ExtendedDescription> {
         return client.getMastodonRequest(
-            endpoint = "$instanceEndpointV1/extended_description",
+            endpoint = "$endpointV1/extended_description",
             method = MastodonClient.Method.GET
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/ListMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/ListMethods.kt
index 5f2cb85..c9d04b3 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/ListMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/ListMethods.kt
@@ -14,13 +14,15 @@ import social.bigbone.api.entity.MastodonList
  */
 class ListMethods(private val client: MastodonClient) {
 
+    private val endpoint = "api/v1/lists"
+
     /**
      * Fetch all lists that the user owns.
      * @see <a href="https://docs.joinmastodon.org/methods/lists/#get">Mastodon API documentation: methods/lists/#get</a>
      */
     fun getLists(): MastodonRequest<List<MastodonList>> {
         return client.getMastodonRequestForList(
-            endpoint = "api/v1/lists",
+            endpoint = endpoint,
             method = MastodonClient.Method.GET
         )
     }
@@ -32,7 +34,7 @@ class ListMethods(private val client: MastodonClient) {
      */
     fun getList(listId: String): MastodonRequest<MastodonList> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/lists/$listId",
+            endpoint = "$endpoint/$listId",
             method = MastodonClient.Method.GET
         )
     }
@@ -40,7 +42,7 @@ class ListMethods(private val client: MastodonClient) {
     /**
      * Create a new list.
      * @param title The title of the list to be created.
-     * @param repliesPolicy One of [MastodonList.RepliesPolicy], defaults to [MastodonList.RepliesPolicy.List].
+     * @param repliesPolicy One of [MastodonList.RepliesPolicy], defaults to [MastodonList.RepliesPolicy.LIST].
      * @param exclusive Whether members of this list need to get removed from the “Home” feed.
      * @see <a href="https://docs.joinmastodon.org/methods/lists/#create">Mastodon API documentation: methods/lists/#create</a>
      */
@@ -51,7 +53,7 @@ class ListMethods(private val client: MastodonClient) {
         exclusive: Boolean? = null
     ): MastodonRequest<MastodonList> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/lists",
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("title", title)
@@ -74,7 +76,7 @@ class ListMethods(private val client: MastodonClient) {
         repliesPolicy: MastodonList.RepliesPolicy
     ): MastodonRequest<MastodonList> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/lists/$listId",
+            endpoint = "$endpoint/$listId",
             method = MastodonClient.Method.PUT,
             parameters = Parameters().apply {
                 append("title", title)
@@ -90,7 +92,7 @@ class ListMethods(private val client: MastodonClient) {
      */
     fun deleteList(listId: String) {
         client.performAction(
-            endpoint = "api/v1/lists/$listId",
+            endpoint = "$endpoint/$listId",
             method = MastodonClient.Method.DELETE
         )
     }
@@ -104,7 +106,7 @@ class ListMethods(private val client: MastodonClient) {
     @JvmOverloads
     fun getAccountsInList(listId: String, range: Range = Range()): MastodonRequest<Pageable<Account>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/lists/$listId/accounts",
+            endpoint = "$endpoint/$listId/accounts",
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
@@ -118,7 +120,7 @@ class ListMethods(private val client: MastodonClient) {
      */
     fun addAccountsToList(listId: String, accountIds: List<String>) {
         client.performAction(
-            endpoint = "api/v1/lists/$listId/accounts",
+            endpoint = "$endpoint/$listId/accounts",
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("account_ids", accountIds)
@@ -134,7 +136,7 @@ class ListMethods(private val client: MastodonClient) {
      */
     fun deleteAccountsFromList(listId: String, accountIds: List<String>) {
         client.performAction(
-            endpoint = "api/v1/lists/$listId/accounts",
+            endpoint = "$endpoint/$listId/accounts",
             method = MastodonClient.Method.DELETE,
             parameters = Parameters().apply {
                 append("account_ids", accountIds)
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/MarkerMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/MarkerMethods.kt
index 935033a..65be612 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/MarkerMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/MarkerMethods.kt
@@ -12,6 +12,9 @@ import social.bigbone.api.exception.BigBoneRequestException
  * @see <a href="https://docs.joinmastodon.org/methods/markers/">Mastodon markers API methods</a>
  */
 class MarkerMethods(private val client: MastodonClient) {
+
+    private val endpoint = "api/v1/markers"
+
     /**
      * Get saved timeline positions.
      * @param timeline specifies for which timelines the position markers should be returned. This value
@@ -22,7 +25,7 @@ class MarkerMethods(private val client: MastodonClient) {
     @JvmOverloads
     fun getMarkers(timeline: Timeline? = null): MastodonRequest<Markers> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/markers",
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = Parameters().apply {
                 timeline?.let {
@@ -51,7 +54,7 @@ class MarkerMethods(private val client: MastodonClient) {
         lastReadId: Int
     ): MastodonRequest<Marker> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/markers",
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 when (timeline) {
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/MuteMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/MuteMethods.kt
index a155db9..3ae75c0 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/MuteMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/MuteMethods.kt
@@ -12,6 +12,8 @@ import social.bigbone.api.entity.Account
  */
 class MuteMethods(private val client: MastodonClient) {
 
+    private val endpoint = "api/v1/mutes"
+
     /**
      * Accounts the user has muted.
      * @param range optional Range for the pageable return value
@@ -20,7 +22,7 @@ class MuteMethods(private val client: MastodonClient) {
     @JvmOverloads
     fun getMutes(range: Range = Range()): MastodonRequest<Pageable<Account>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/mutes",
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/NotificationMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/NotificationMethods.kt
index 04cea3d..c7556e8 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/NotificationMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/NotificationMethods.kt
@@ -13,7 +13,7 @@ import social.bigbone.api.exception.BigBoneRequestException
  */
 class NotificationMethods(private val client: MastodonClient) {
 
-    private val notificationsEndpoint = "api/v1/notifications"
+    private val endpoint = "api/v1/notifications"
 
     /**
      * Notifications concerning the user.
@@ -31,7 +31,7 @@ class NotificationMethods(private val client: MastodonClient) {
         range: Range = Range()
     ): MastodonRequest<Pageable<Notification>> {
         return client.getPageableMastodonRequest(
-            endpoint = notificationsEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = range.toParameters().apply {
                 includeTypes?.let {
@@ -52,7 +52,7 @@ class NotificationMethods(private val client: MastodonClient) {
      */
     fun getNotification(id: String): MastodonRequest<Notification> {
         return client.getMastodonRequest(
-            endpoint = "$notificationsEndpoint/$id",
+            endpoint = "$endpoint/$id",
             method = MastodonClient.Method.GET
         )
     }
@@ -64,7 +64,7 @@ class NotificationMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun dismissAllNotifications() {
         client.performAction(
-            endpoint = "$notificationsEndpoint/clear",
+            endpoint = "$endpoint/clear",
             method = MastodonClient.Method.POST
         )
     }
@@ -77,7 +77,7 @@ class NotificationMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun dismissNotification(notificationId: String) {
         client.performAction(
-            endpoint = "$notificationsEndpoint/$notificationId/dismiss",
+            endpoint = "$endpoint/$notificationId/dismiss",
             method = MastodonClient.Method.POST
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/OAuthMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/OAuthMethods.kt
index c93c73b..8d4dd0a 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/OAuthMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/OAuthMethods.kt
@@ -12,6 +12,8 @@ import social.bigbone.api.entity.Token
  */
 class OAuthMethods(private val client: MastodonClient) {
 
+    private val endpoint = "oauth"
+
     /**
      * Returns a URL that can be used to display an authorization form to the user. If approved,
      * it will create and return an authorization code, then redirect to the desired redirectUri,
@@ -32,7 +34,7 @@ class OAuthMethods(private val client: MastodonClient) {
         forceLogin: Boolean? = null,
         languageCode: String? = null
     ): String {
-        val endpoint = "oauth/authorize"
+        val endpoint = "$endpoint/authorize"
         val params = Parameters().apply {
             append("client_id", clientId)
             append("redirect_uri", redirectUri)
@@ -72,7 +74,7 @@ class OAuthMethods(private val client: MastodonClient) {
         scope: Scope? = null
     ): MastodonRequest<Token> {
         return client.getMastodonRequest(
-            endpoint = "oauth/token",
+            endpoint = "$endpoint/token",
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("client_id", clientId)
@@ -103,7 +105,7 @@ class OAuthMethods(private val client: MastodonClient) {
         scope: Scope? = null
     ): MastodonRequest<Token> {
         return client.getMastodonRequest(
-            endpoint = "oauth/token",
+            endpoint = "$endpoint/token",
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("client_id", clientId)
@@ -139,7 +141,7 @@ class OAuthMethods(private val client: MastodonClient) {
         scope: Scope? = null
     ): MastodonRequest<Token> {
         return client.getMastodonRequest(
-            endpoint = "oauth/token",
+            endpoint = "$endpoint/token",
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("client_id", clientId)
@@ -167,7 +169,7 @@ class OAuthMethods(private val client: MastodonClient) {
         token: String
     ) {
         client.performAction(
-            endpoint = "oauth/revoke",
+            endpoint = "$endpoint/revoke",
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("client_id", clientId)
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/OEmbedMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/OEmbedMethods.kt
index fb539b2..e8ef5e1 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/OEmbedMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/OEmbedMethods.kt
@@ -11,7 +11,7 @@ import social.bigbone.api.entity.OEmbedMetadata
  */
 class OEmbedMethods(private val mastodonClient: MastodonClient) {
 
-    private val oEmbedEndpoint = "api/oembed"
+    private val endpoint = "api/oembed"
 
     /**
      * Get oEmbed info as JSON.
@@ -27,7 +27,7 @@ class OEmbedMethods(private val mastodonClient: MastodonClient) {
         maxHeight: Int? = null
     ): MastodonRequest<OEmbedMetadata> {
         return mastodonClient.getMastodonRequest<OEmbedMetadata>(
-            endpoint = oEmbedEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = Parameters().apply {
                 append("url", urlOfStatus)
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/PollMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/PollMethods.kt
index d816500..9eccbbc 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/PollMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/PollMethods.kt
@@ -12,6 +12,8 @@ import social.bigbone.api.exception.BigBoneRequestException
  */
 class PollMethods(private val client: MastodonClient) {
 
+    private val endpoint = "api/v1/polls"
+
     /**
      * View a poll attached to a status. To discover poll ID, you will need to GET a Status first and then check for
      *  a poll property.
@@ -21,7 +23,7 @@ class PollMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun viewPoll(pollId: String): MastodonRequest<Poll> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/polls/$pollId",
+            endpoint = "$endpoint/$pollId",
             method = MastodonClient.Method.GET
         )
     }
@@ -36,7 +38,7 @@ class PollMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun voteOnPoll(pollId: String, choices: List<Int>): MastodonRequest<Poll> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/polls/$pollId/votes",
+            endpoint = "$endpoint/$pollId/votes",
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 appendInts("choices", choices)
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/PreferenceMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/PreferenceMethods.kt
index ce12a7c..aef1525 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/PreferenceMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/PreferenceMethods.kt
@@ -11,7 +11,7 @@ import social.bigbone.api.exception.BigBoneRequestException
  */
 class PreferenceMethods(private val client: MastodonClient) {
 
-    private val preferencesEndpoint = "api/v1/preferences"
+    private val endpoint = "api/v1/preferences"
 
     /**
      * Get preferences about an account.
@@ -20,7 +20,7 @@ class PreferenceMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun getPreferences(): MastodonRequest<Preferences> {
         return client.getMastodonRequest(
-            endpoint = preferencesEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.GET
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/PushNotificationMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/PushNotificationMethods.kt
index 88b57c9..a62ba0f 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/PushNotificationMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/PushNotificationMethods.kt
@@ -12,7 +12,7 @@ import social.bigbone.api.exception.BigBoneRequestException
  */
 class PushNotificationMethods(private val client: MastodonClient) {
 
-    private val pushEndpoint = "/api/v1/push/subscription"
+    private val endpoint = "api/v1/push/subscription"
 
     /**
      * Specify whether to receive push notifications from all, followed, follower, or none users.
@@ -59,7 +59,7 @@ class PushNotificationMethods(private val client: MastodonClient) {
         policy: PushDataPolicy? = null
     ): MastodonRequest<WebPushSubscription> {
         return client.getMastodonRequest(
-            endpoint = pushEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("subscription[endpoint]", endpoint)
@@ -112,7 +112,7 @@ class PushNotificationMethods(private val client: MastodonClient) {
         policy: PushDataPolicy? = null
     ): MastodonRequest<WebPushSubscription> {
         return client.getMastodonRequest(
-            endpoint = pushEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.PUT,
             parameters = Parameters().apply {
                 mention?.let { append("data[alerts][mention]", it) }
@@ -137,7 +137,7 @@ class PushNotificationMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun getPushNotification(): MastodonRequest<WebPushSubscription> {
         return client.getMastodonRequest(
-            endpoint = pushEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.GET
         )
     }
@@ -149,7 +149,7 @@ class PushNotificationMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun removePushSubscription() {
         client.performAction(
-            endpoint = pushEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.DELETE
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/ReportMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/ReportMethods.kt
index 3de5f0f..27ea04b 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/ReportMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/ReportMethods.kt
@@ -13,6 +13,8 @@ import social.bigbone.api.exception.BigBoneRequestException
  */
 class ReportMethods(private val client: MastodonClient) {
 
+    private val endpoint = "api/v1/reports"
+
     /**
      * File a report.
      * @param accountId The ID of the account to report
@@ -34,7 +36,7 @@ class ReportMethods(private val client: MastodonClient) {
         category: ReportCategory? = null
     ): MastodonRequest<Report> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/reports",
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = buildParameters(accountId, statusIds, comment, forward, ruleIds, category)
         )
@@ -64,7 +66,10 @@ class ReportMethods(private val client: MastodonClient) {
         }
     }
 
-    private fun setCategoryCorrectly(ruleIds: List<Int>? = emptyList(), category: ReportCategory? = null): ReportCategory {
+    private fun setCategoryCorrectly(
+        ruleIds: List<Int>? = emptyList(),
+        category: ReportCategory? = null
+    ): ReportCategory {
         return when {
             !ruleIds.isNullOrEmpty() -> ReportCategory.VIOLATION
             category == null -> ReportCategory.OTHER
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/SearchMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/SearchMethods.kt
index 31d9004..6a6d41f 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/SearchMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/SearchMethods.kt
@@ -14,6 +14,8 @@ import social.bigbone.api.entity.Search
  */
 class SearchMethods(private val client: MastodonClient) {
 
+    private val endpoint = "api/v2/search"
+
     /**
      * Specify whether to search for only accounts, hashtags, statuses.
      */
@@ -61,7 +63,7 @@ class SearchMethods(private val client: MastodonClient) {
         offset: Int? = null
     ): MastodonRequest<Search> {
         return client.getMastodonRequest(
-            endpoint = "api/v2/search",
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = buildParameters(
                 query = query,
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/StatusMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/StatusMethods.kt
index 7774c6c..eb0e67f 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/StatusMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/StatusMethods.kt
@@ -29,6 +29,8 @@ private val SCHEDULED_AT_MIN_AHEAD: Duration = Duration.ofMinutes(5)
  */
 class StatusMethods(private val client: MastodonClient) {
 
+    private val endpoint = "api/v1/statuses"
+
     /**
      * Obtain information about a status.
      * @param statusId ID of the status.
@@ -37,7 +39,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun getStatus(statusId: String): MastodonRequest<Status> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId",
+            endpoint = "$endpoint/$statusId",
             method = MastodonClient.Method.GET
         )
     }
@@ -50,7 +52,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun getContext(statusId: String): MastodonRequest<Context> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId/context",
+            endpoint = "$endpoint/$statusId/context",
             method = MastodonClient.Method.GET
         )
     }
@@ -65,7 +67,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun translateStatus(statusId: String, language: String? = null): MastodonRequest<Translation> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId/translate",
+            endpoint = "$endpoint/$statusId/translate",
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 language?.let { append("lang", it) }
@@ -83,7 +85,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun getRebloggedBy(statusId: String, range: Range = Range()): MastodonRequest<Pageable<Account>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId/reblogged_by",
+            endpoint = "$endpoint/$statusId/reblogged_by",
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
@@ -99,7 +101,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun getFavouritedBy(statusId: String, range: Range = Range()): MastodonRequest<Pageable<Account>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId/favourited_by",
+            endpoint = "$endpoint/$statusId/favourited_by",
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
@@ -133,7 +135,7 @@ class StatusMethods(private val client: MastodonClient) {
         addIdempotencyKey: Boolean = true
     ): MastodonRequest<Status> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses",
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("status", status)
@@ -175,7 +177,7 @@ class StatusMethods(private val client: MastodonClient) {
         addIdempotencyKey: Boolean = true
     ): MastodonRequest<Status> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses",
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("status", status)
@@ -227,7 +229,7 @@ class StatusMethods(private val client: MastodonClient) {
         }
 
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses",
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("status", status)
@@ -276,7 +278,7 @@ class StatusMethods(private val client: MastodonClient) {
         }
 
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses",
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("status", status)
@@ -303,7 +305,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun deleteStatus(statusId: String): MastodonRequest<Status> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId",
+            endpoint = "$endpoint/$statusId",
             method = MastodonClient.Method.DELETE
         )
     }
@@ -325,7 +327,7 @@ class StatusMethods(private val client: MastodonClient) {
             throw BigBoneRequestException("Visibility must be one of: public, unlisted, private when reblogging.")
         }
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId/reblog",
+            endpoint = "$endpoint/$statusId/reblog",
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("visibility", visibility.apiName)
@@ -341,7 +343,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun unreblogStatus(statusId: String): MastodonRequest<Status> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId/unreblog",
+            endpoint = "$endpoint/$statusId/unreblog",
             method = MastodonClient.Method.POST
         )
     }
@@ -354,7 +356,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun favouriteStatus(statusId: String): MastodonRequest<Status> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId/favourite",
+            endpoint = "$endpoint/$statusId/favourite",
             method = MastodonClient.Method.POST
         )
     }
@@ -367,7 +369,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun unfavouriteStatus(statusId: String): MastodonRequest<Status> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId/unfavourite",
+            endpoint = "$endpoint/$statusId/unfavourite",
             method = MastodonClient.Method.POST
         )
     }
@@ -380,7 +382,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun bookmarkStatus(statusId: String): MastodonRequest<Status> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId/bookmark",
+            endpoint = "$endpoint/$statusId/bookmark",
             method = MastodonClient.Method.POST
         )
     }
@@ -393,7 +395,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun unbookmarkStatus(statusId: String): MastodonRequest<Status> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId/unbookmark",
+            endpoint = "$endpoint/$statusId/unbookmark",
             method = MastodonClient.Method.POST
         )
     }
@@ -406,7 +408,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun muteConversation(statusId: String): MastodonRequest<Status> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId/mute",
+            endpoint = "$endpoint/$statusId/mute",
             method = MastodonClient.Method.POST
         )
     }
@@ -419,7 +421,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun unmuteConversation(statusId: String): MastodonRequest<Status> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId/unmute",
+            endpoint = "$endpoint/$statusId/unmute",
             method = MastodonClient.Method.POST
         )
     }
@@ -432,7 +434,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun pinStatus(statusId: String): MastodonRequest<Status> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId/pin",
+            endpoint = "$endpoint/$statusId/pin",
             method = MastodonClient.Method.POST
         )
     }
@@ -445,7 +447,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun unpinStatus(statusId: String): MastodonRequest<Status> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId/unpin",
+            endpoint = "$endpoint/$statusId/unpin",
             method = MastodonClient.Method.POST
         )
     }
@@ -473,7 +475,7 @@ class StatusMethods(private val client: MastodonClient) {
         language: String? = null
     ): MastodonRequest<Status> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId",
+            endpoint = "$endpoint/$statusId",
             method = MastodonClient.Method.PUT,
             parameters = Parameters().apply {
                 append("status", status)
@@ -508,7 +510,7 @@ class StatusMethods(private val client: MastodonClient) {
         language: String? = null
     ): MastodonRequest<Status> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId",
+            endpoint = "$endpoint/$statusId",
             method = MastodonClient.Method.PUT,
             parameters = Parameters().apply {
                 append("status", status)
@@ -531,7 +533,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun getEditHistory(statusId: String): MastodonRequest<List<StatusEdit>> {
         return client.getMastodonRequestForList(
-            endpoint = "api/v1/statuses/$statusId/history",
+            endpoint = "$endpoint/$statusId/history",
             method = MastodonClient.Method.GET
         )
     }
@@ -544,7 +546,7 @@ class StatusMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun getStatusSource(statusId: String): MastodonRequest<StatusSource> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/statuses/$statusId/source",
+            endpoint = "$endpoint/$statusId/source",
             method = MastodonClient.Method.GET
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/StreamingMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/StreamingMethods.kt
index bc4c28d..ebbe907 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/StreamingMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/StreamingMethods.kt
@@ -26,6 +26,8 @@ import java.io.Closeable
  */
 class StreamingMethods(private val client: MastodonClient) {
 
+    private val endpoint = "api/v1/streaming"
+
     private fun stream(
         streamType: StreamType,
         callback: WebSocketCallback,
@@ -77,7 +79,7 @@ class StreamingMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun checkServerHealth() {
         client.performAction(
-            endpoint = "api/v1/streaming/health",
+            endpoint = "$endpoint/health",
             method = MastodonClient.Method.GET
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/SuggestionMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/SuggestionMethods.kt
index 19a2ad3..2680505 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/SuggestionMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/SuggestionMethods.kt
@@ -11,8 +11,8 @@ import social.bigbone.api.entity.Suggestion
  */
 class SuggestionMethods(private val client: MastodonClient) {
 
-    private val suggestionsEndpointV2 = "/api/v2/suggestions"
-    private val suggestionsEndpointV1 = "/api/v1/suggestions"
+    private val endpointV2 = "api/v2/suggestions"
+    private val endpointV1 = "api/v1/suggestions"
 
     /**
      * Accounts that are promoted by staff, or that the user has had past positive interactions with, but is not yet following.
@@ -21,7 +21,7 @@ class SuggestionMethods(private val client: MastodonClient) {
      */
     fun getSuggestions(limit: Int? = null): MastodonRequest<List<Suggestion>> {
         return client.getMastodonRequestForList(
-            endpoint = suggestionsEndpointV2,
+            endpoint = endpointV2,
             method = MastodonClient.Method.GET,
             parameters = Parameters().apply {
                 append("limit", limit ?: 40)
@@ -36,7 +36,7 @@ class SuggestionMethods(private val client: MastodonClient) {
      */
     fun removeSuggestion(accountId: String) {
         client.performAction(
-            endpoint = "$suggestionsEndpointV1/$accountId",
+            endpoint = "$endpointV1/$accountId",
             method = MastodonClient.Method.DELETE
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/TagMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/TagMethods.kt
index a8d6c7c..f1e4102 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/TagMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/TagMethods.kt
@@ -10,6 +10,8 @@ import social.bigbone.api.entity.Tag
  */
 class TagMethods(private val client: MastodonClient) {
 
+    private val endpoint = "api/v1/tags"
+
     /**
      * Show a hashtag and its associated information.
      * @param tagId The name of the hashtag
@@ -17,7 +19,7 @@ class TagMethods(private val client: MastodonClient) {
      */
     fun getTag(tagId: String): MastodonRequest<Tag> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/tags/$tagId",
+            endpoint = "$endpoint/$tagId",
             method = MastodonClient.Method.GET
         )
     }
@@ -29,7 +31,7 @@ class TagMethods(private val client: MastodonClient) {
      */
     fun followTag(tagId: String): MastodonRequest<Tag> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/tags/$tagId/follow",
+            endpoint = "$endpoint/$tagId/follow",
             method = MastodonClient.Method.POST
         )
     }
@@ -41,7 +43,7 @@ class TagMethods(private val client: MastodonClient) {
      */
     fun unfollowTag(tagId: String): MastodonRequest<Tag> {
         return client.getMastodonRequest(
-            endpoint = "api/v1/tags/$tagId/unfollow",
+            endpoint = "$endpoint/$tagId/unfollow",
             method = MastodonClient.Method.POST
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/TimelineMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/TimelineMethods.kt
index 97d0965..420d7fd 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/TimelineMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/TimelineMethods.kt
@@ -12,6 +12,9 @@ import social.bigbone.api.exception.BigBoneRequestException
  * @see <a href="https://docs.joinmastodon.org/methods/timelines/">Mastodon timelines API methods</a>
  */
 class TimelineMethods(private val client: MastodonClient) {
+
+    private val endpoint = "api/v1/timelines"
+
     /**
      * Public timelines can consist of only local statuses, only remote (=federated) statuses, or a combination of both.
      */
@@ -30,7 +33,7 @@ class TimelineMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun getHomeTimeline(range: Range = Range()): MastodonRequest<Pageable<Status>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/timelines/home",
+            endpoint = "$endpoint/home",
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
@@ -46,7 +49,7 @@ class TimelineMethods(private val client: MastodonClient) {
     @Throws(BigBoneRequestException::class)
     fun getListTimeline(listId: String, range: Range = Range()): MastodonRequest<Pageable<Status>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/timelines/list/$listId",
+            endpoint = "$endpoint/list/$listId",
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
@@ -67,7 +70,7 @@ class TimelineMethods(private val client: MastodonClient) {
         range: Range = Range()
     ): MastodonRequest<Pageable<Status>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/timelines/public",
+            endpoint = "$endpoint/public",
             method = MastodonClient.Method.GET,
             parameters = range.toParameters().apply {
                 when (statusOrigin) {
@@ -104,7 +107,7 @@ class TimelineMethods(private val client: MastodonClient) {
         onlyMedia: Boolean? = null
     ): MastodonRequest<Pageable<Status>> {
         return client.getPageableMastodonRequest(
-            endpoint = "api/v1/timelines/tag/$tag",
+            endpoint = "$endpoint/tag/$tag",
             method = MastodonClient.Method.GET,
             parameters = range.toParameters().apply {
                 when (statusOrigin) {
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/TrendMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/TrendMethods.kt
index a18e394..71bcdce 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/TrendMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/TrendMethods.kt
@@ -13,7 +13,7 @@ import social.bigbone.api.entity.TrendsLink
  */
 class TrendMethods(private val client: MastodonClient) {
 
-    private val trendsEndpoint = "api/v1/trends"
+    private val endpoint = "api/v1/trends"
 
     /**
      * Tags that are being used more frequently within the past week.
@@ -28,7 +28,7 @@ class TrendMethods(private val client: MastodonClient) {
         limit: Int = 10
     ): MastodonRequest<List<Tag>> {
         return client.getMastodonRequestForList(
-            endpoint = "$trendsEndpoint/tags",
+            endpoint = "$endpoint/tags",
             method = MastodonClient.Method.GET,
             parameters = Parameters().apply {
                 append("limit", limit)
@@ -49,7 +49,7 @@ class TrendMethods(private val client: MastodonClient) {
         limit: Int = 20
     ): MastodonRequest<List<Status>> {
         return client.getMastodonRequestForList(
-            endpoint = "$trendsEndpoint/statuses",
+            endpoint = "$endpoint/statuses",
             method = MastodonClient.Method.GET,
             parameters = Parameters().apply {
                 append("limit", limit)
@@ -71,7 +71,7 @@ class TrendMethods(private val client: MastodonClient) {
         limit: Int = 10
     ): MastodonRequest<List<TrendsLink>> {
         return client.getMastodonRequestForList(
-            endpoint = "$trendsEndpoint/links",
+            endpoint = "$endpoint/links",
             method = MastodonClient.Method.GET,
             parameters = Parameters().apply {
                 append("limit", limit)
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminAccountMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminAccountMethods.kt
index a84ee20..07a7cec 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminAccountMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminAccountMethods.kt
@@ -18,8 +18,8 @@ import social.bigbone.api.entity.admin.AdminAccount
  */
 class AdminAccountMethods(private val client: MastodonClient) {
 
-    private val adminAccountsEndpointV1 = "api/v1/admin/accounts"
-    private val adminAccountsEndpointV2 = "api/v2/admin/accounts"
+    private val endpointV1 = "api/v1/admin/accounts"
+    private val endpointV2 = "api/v2/admin/accounts"
 
     /**
      * View all accounts, optionally matching certain criteria for filtering, up to 100 at a time.
@@ -53,7 +53,7 @@ class AdminAccountMethods(private val client: MastodonClient) {
         ipAddress: String? = null
     ): MastodonRequest<Pageable<AdminAccount>> {
         return client.getPageableMastodonRequest<AdminAccount>(
-            endpoint = adminAccountsEndpointV2,
+            endpoint = endpointV2,
             method = Method.GET,
             parameters = Parameters().apply {
                 range.toParameters(parameters = this)
@@ -81,7 +81,7 @@ class AdminAccountMethods(private val client: MastodonClient) {
      */
     fun viewAccount(withId: String): MastodonRequest<AdminAccount> {
         return client.getMastodonRequest<AdminAccount>(
-            endpoint = "$adminAccountsEndpointV1/$withId",
+            endpoint = "$endpointV1/$withId",
             method = Method.GET
         )
     }
@@ -95,7 +95,7 @@ class AdminAccountMethods(private val client: MastodonClient) {
      */
     fun approvePendingAccount(withId: String): MastodonRequest<AdminAccount> {
         return client.getMastodonRequest<AdminAccount>(
-            endpoint = "$adminAccountsEndpointV1/$withId/approve",
+            endpoint = "$endpointV1/$withId/approve",
             method = Method.POST
         )
     }
@@ -109,7 +109,7 @@ class AdminAccountMethods(private val client: MastodonClient) {
      */
     fun rejectPendingAccount(withId: String): MastodonRequest<AdminAccount> {
         return client.getMastodonRequest<AdminAccount>(
-            endpoint = "$adminAccountsEndpointV1/$withId/reject",
+            endpoint = "$endpointV1/$withId/reject",
             method = Method.POST
         )
     }
@@ -123,7 +123,7 @@ class AdminAccountMethods(private val client: MastodonClient) {
      */
     fun deleteAccount(withId: String): MastodonRequest<AdminAccount> {
         return client.getMastodonRequest<AdminAccount>(
-            endpoint = "$adminAccountsEndpointV1/$withId",
+            endpoint = "$endpointV1/$withId",
             method = Method.DELETE
         )
     }
@@ -151,7 +151,7 @@ class AdminAccountMethods(private val client: MastodonClient) {
         sendEmailNotification: Boolean? = null
     ) {
         return client.performAction(
-            endpoint = "$adminAccountsEndpointV1/$withId/action",
+            endpoint = "$endpointV1/$withId/action",
             method = Method.POST,
             parameters = Parameters().apply {
                 append("type", type.apiName())
@@ -171,7 +171,7 @@ class AdminAccountMethods(private val client: MastodonClient) {
      */
     fun enableDisabledAccount(withId: String): MastodonRequest<AdminAccount> {
         return client.getMastodonRequest<AdminAccount>(
-            endpoint = "$adminAccountsEndpointV1/$withId/enable",
+            endpoint = "$endpointV1/$withId/enable",
             method = Method.POST
         )
     }
@@ -183,7 +183,7 @@ class AdminAccountMethods(private val client: MastodonClient) {
      */
     fun unsilenceAccount(withId: String): MastodonRequest<AdminAccount> {
         return client.getMastodonRequest<AdminAccount>(
-            endpoint = "$adminAccountsEndpointV1/$withId/unsilence",
+            endpoint = "$endpointV1/$withId/unsilence",
             method = Method.POST
         )
     }
@@ -195,7 +195,7 @@ class AdminAccountMethods(private val client: MastodonClient) {
      */
     fun unsuspendAccount(withId: String): MastodonRequest<AdminAccount> {
         return client.getMastodonRequest<AdminAccount>(
-            endpoint = "$adminAccountsEndpointV1/$withId/unsuspend",
+            endpoint = "$endpointV1/$withId/unsuspend",
             method = Method.POST
         )
     }
@@ -207,7 +207,7 @@ class AdminAccountMethods(private val client: MastodonClient) {
      */
     fun unmarkAccountAsSensitive(withId: String): MastodonRequest<AdminAccount> {
         return client.getMastodonRequest<AdminAccount>(
-            endpoint = "$adminAccountsEndpointV1/$withId/unsensitive",
+            endpoint = "$endpointV1/$withId/unsensitive",
             method = Method.POST
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminCanonicalEmailBlockMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminCanonicalEmailBlockMethods.kt
index 557b31e..f0c65fa 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminCanonicalEmailBlockMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminCanonicalEmailBlockMethods.kt
@@ -15,7 +15,7 @@ import social.bigbone.api.entity.admin.BlockCanonicalEmailVariant
  */
 class AdminCanonicalEmailBlockMethods(private val client: MastodonClient) {
 
-    private val adminCanonicalEmailBlockEndpoint = "api/v1/admin/canonical_email_blocks"
+    private val endpoint = "api/v1/admin/canonical_email_blocks"
 
     /**
      * List all canonical email blocks.
@@ -28,7 +28,7 @@ class AdminCanonicalEmailBlockMethods(private val client: MastodonClient) {
     @JvmOverloads
     fun getAllCanonicalEmailBlocks(range: Range = Range()): MastodonRequest<Pageable<AdminCanonicalEmailBlock>> {
         return client.getPageableMastodonRequest(
-            endpoint = adminCanonicalEmailBlockEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
@@ -44,7 +44,7 @@ class AdminCanonicalEmailBlockMethods(private val client: MastodonClient) {
      */
     fun getCanonicalEmailBlock(id: String): MastodonRequest<AdminCanonicalEmailBlock> {
         return client.getMastodonRequest(
-            endpoint = "$adminCanonicalEmailBlockEndpoint/$id",
+            endpoint = "$endpoint/$id",
             method = MastodonClient.Method.GET
         )
     }
@@ -59,7 +59,7 @@ class AdminCanonicalEmailBlockMethods(private val client: MastodonClient) {
      */
     fun blockCanonicalEmail(variant: BlockCanonicalEmailVariant): MastodonRequest<AdminCanonicalEmailBlock> {
         return client.getMastodonRequest(
-            endpoint = adminCanonicalEmailBlockEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = variant.appendToParameters()
         )
@@ -75,7 +75,7 @@ class AdminCanonicalEmailBlockMethods(private val client: MastodonClient) {
      */
     fun removeCanonicalEmailBlock(id: String) {
         client.performAction(
-            endpoint = "$adminCanonicalEmailBlockEndpoint/$id",
+            endpoint = "$endpoint/$id",
             method = MastodonClient.Method.DELETE
         )
     }
@@ -91,7 +91,7 @@ class AdminCanonicalEmailBlockMethods(private val client: MastodonClient) {
      */
     fun canonicalizeAndHashEmailAddress(emailAddress: String): MastodonRequest<List<AdminCanonicalEmailBlock>> {
         return client.getMastodonRequestForList(
-            endpoint = "$adminCanonicalEmailBlockEndpoint/test",
+            endpoint = "$endpoint/test",
             method = MastodonClient.Method.POST,
             parameters = Parameters().append("email", emailAddress)
         )
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminDimensionMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminDimensionMethods.kt
index 09767cf..3970cc7 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminDimensionMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminDimensionMethods.kt
@@ -13,7 +13,7 @@ import java.time.Instant
  */
 class AdminDimensionMethods(private val client: MastodonClient) {
 
-    private val adminDimensionsEndpoint = "api/v1/admin/dimensions"
+    private val endpoint = "api/v1/admin/dimensions"
 
     /**
      * Obtain information about popularity of certain accounts, servers, languages, etc.
@@ -31,7 +31,7 @@ class AdminDimensionMethods(private val client: MastodonClient) {
         endAt: Instant
     ): MastodonRequest<List<AdminDimension>> {
         return client.getMastodonRequestForList(
-            endpoint = adminDimensionsEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 dimensions
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminEmailDomainBlockMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminEmailDomainBlockMethods.kt
index 00973bf..a1b7be5 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminEmailDomainBlockMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminEmailDomainBlockMethods.kt
@@ -14,7 +14,7 @@ import social.bigbone.api.entity.admin.AdminEmailDomainBlock
  */
 class AdminEmailDomainBlockMethods(private val client: MastodonClient) {
 
-    private val adminEmailDomainBlockEndpoint = "api/v1/admin/email_domain_blocks"
+    private val endpoint = "api/v1/admin/email_domain_blocks"
 
     /**
      * Show information about all email domains blocked from signing up.
@@ -26,7 +26,7 @@ class AdminEmailDomainBlockMethods(private val client: MastodonClient) {
     @JvmOverloads
     fun getAllEmailDomainBlocks(range: Range = Range()): MastodonRequest<Pageable<AdminEmailDomainBlock>> {
         return client.getPageableMastodonRequest(
-            endpoint = adminEmailDomainBlockEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
@@ -41,7 +41,7 @@ class AdminEmailDomainBlockMethods(private val client: MastodonClient) {
      */
     fun getEmailDomainBlock(id: String): MastodonRequest<AdminEmailDomainBlock> {
         return client.getMastodonRequest(
-            endpoint = "$adminEmailDomainBlockEndpoint/$id",
+            endpoint = "$endpoint/$id",
             method = MastodonClient.Method.GET
         )
     }
@@ -54,7 +54,7 @@ class AdminEmailDomainBlockMethods(private val client: MastodonClient) {
      */
     fun blockEmailDomain(domain: String): MastodonRequest<AdminEmailDomainBlock> {
         return client.getMastodonRequest(
-            endpoint = adminEmailDomainBlockEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().append("domain", domain)
         )
@@ -69,7 +69,7 @@ class AdminEmailDomainBlockMethods(private val client: MastodonClient) {
      */
     fun removeEmailDomainBlock(id: String) {
         client.performAction(
-            endpoint = "$adminEmailDomainBlockEndpoint/$id",
+            endpoint = "$endpoint/$id",
             method = MastodonClient.Method.DELETE
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminIpBlockMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminIpBlockMethods.kt
index 9199b8e..1ab88fa 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminIpBlockMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminIpBlockMethods.kt
@@ -13,7 +13,7 @@ import social.bigbone.api.entity.admin.AdminIpBlock
  */
 class AdminIpBlockMethods(private val client: MastodonClient) {
 
-    private val adminIpBlockEndpoint = "/api/v1/admin/ip_blocks"
+    private val endpoint = "api/v1/admin/ip_blocks"
 
     /**
      * Show information about all blocked IP ranges.
@@ -23,7 +23,7 @@ class AdminIpBlockMethods(private val client: MastodonClient) {
     @JvmOverloads
     fun getAllIpBlocks(range: Range = Range()): MastodonRequest<Pageable<AdminIpBlock>> {
         return client.getPageableMastodonRequest(
-            endpoint = adminIpBlockEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.GET,
             parameters = range.toParameters()
         )
@@ -36,7 +36,7 @@ class AdminIpBlockMethods(private val client: MastodonClient) {
      */
     fun getBlockedIpRange(id: String): MastodonRequest<AdminIpBlock> {
         return client.getMastodonRequest(
-            endpoint = "$adminIpBlockEndpoint/$id",
+            endpoint = "$endpoint/$id",
             method = MastodonClient.Method.GET
         )
     }
@@ -57,7 +57,7 @@ class AdminIpBlockMethods(private val client: MastodonClient) {
         expiresInSeconds: Int? = null
     ): MastodonRequest<AdminIpBlock> {
         return client.getMastodonRequest(
-            endpoint = adminIpBlockEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("ip", ipAddress)
@@ -86,7 +86,7 @@ class AdminIpBlockMethods(private val client: MastodonClient) {
         expiresInSeconds: Int? = null
     ): MastodonRequest<AdminIpBlock> {
         return client.getMastodonRequest(
-            endpoint = "$adminIpBlockEndpoint/$id",
+            endpoint = "$endpoint/$id",
             method = MastodonClient.Method.PUT,
             parameters = Parameters().apply {
                 append("ip", ipAddress)
@@ -104,7 +104,7 @@ class AdminIpBlockMethods(private val client: MastodonClient) {
      */
     fun removeIpBlock(id: String) {
         client.performAction(
-            endpoint = "$adminIpBlockEndpoint/$id",
+            endpoint = "$endpoint/$id",
             method = MastodonClient.Method.DELETE
         )
     }
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminMeasureMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminMeasureMethods.kt
index d56d99a..55a6557 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminMeasureMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminMeasureMethods.kt
@@ -13,7 +13,7 @@ import java.time.Instant
  */
 class AdminMeasureMethods(private val client: MastodonClient) {
 
-    private val adminMeasuresEndpoint = "api/v1/admin/measures"
+    private val endpoint = "api/v1/admin/measures"
 
     /**
      * Obtain statistical measures for your server.
@@ -30,7 +30,7 @@ class AdminMeasureMethods(private val client: MastodonClient) {
         endAt: Instant
     ): MastodonRequest<List<AdminMeasure>> {
         return client.getMastodonRequestForList(
-            endpoint = adminMeasuresEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 measures
diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminRetentionMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminRetentionMethods.kt
index b2d57de..2c3490b 100644
--- a/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminRetentionMethods.kt
+++ b/bigbone/src/main/kotlin/social/bigbone/api/method/admin/AdminRetentionMethods.kt
@@ -13,7 +13,7 @@ import java.time.Instant
  */
 class AdminRetentionMethods(private val client: MastodonClient) {
 
-    private val adminRetentionEndpoint = "api/v1/admin/retention"
+    private val endpoint = "api/v1/admin/retention"
 
     /**
      * Generate a retention data report for a given time period and bucket.
@@ -29,7 +29,7 @@ class AdminRetentionMethods(private val client: MastodonClient) {
         frequency: FrequencyOneOf
     ): MastodonRequest<List<AdminCohort>> {
         return client.getMastodonRequestForList(
-            endpoint = adminRetentionEndpoint,
+            endpoint = endpoint,
             method = MastodonClient.Method.POST,
             parameters = Parameters().apply {
                 append("start_at", startAt.toString())


Test patch:
diff --git a/bigbone/src/test/kotlin/social/bigbone/api/method/DomainBlockMethodsTest.kt b/bigbone/src/test/kotlin/social/bigbone/api/method/DomainBlockMethodsTest.kt
index 107f19f..7a2dbed 100644
--- a/bigbone/src/test/kotlin/social/bigbone/api/method/DomainBlockMethodsTest.kt
+++ b/bigbone/src/test/kotlin/social/bigbone/api/method/DomainBlockMethodsTest.kt
@@ -29,7 +29,7 @@ class DomainBlockMethodsTest {
 
         verify {
             client.get(
-                path = "/api/v1/domain_blocks",
+                path = "api/v1/domain_blocks",
                 query = any<Parameters>()
             )
         }
@@ -57,7 +57,7 @@ class DomainBlockMethodsTest {
 
         verify {
             client.performAction(
-                endpoint = "/api/v1/domain_blocks",
+                endpoint = "api/v1/domain_blocks",
                 method = MastodonClient.Method.POST
             )
         }
@@ -103,7 +103,7 @@ class DomainBlockMethodsTest {
 
         verify {
             client.performAction(
-                endpoint = "/api/v1/domain_blocks",
+                endpoint = "api/v1/domain_blocks",
                 method = MastodonClient.Method.DELETE
             )
         }
diff --git a/bigbone/src/test/kotlin/social/bigbone/api/method/InstanceMethodsTest.kt b/bigbone/src/test/kotlin/social/bigbone/api/method/InstanceMethodsTest.kt
index 374b169..9f84df5 100644
--- a/bigbone/src/test/kotlin/social/bigbone/api/method/InstanceMethodsTest.kt
+++ b/bigbone/src/test/kotlin/social/bigbone/api/method/InstanceMethodsTest.kt
@@ -35,7 +35,7 @@ class InstanceMethodsTest {
 
         verify {
             client.get(
-                path = "/api/v2/instance",
+                path = "api/v2/instance",
                 query = null
             )
         }
@@ -115,7 +115,7 @@ class InstanceMethodsTest {
 
         verify {
             client.get(
-                path = "/api/v2/instance",
+                path = "api/v2/instance",
                 query = null
             )
         }
@@ -173,7 +173,7 @@ class InstanceMethodsTest {
 
         verify {
             client.get(
-                path = "/api/v1/instance",
+                path = "api/v1/instance",
                 query = null
             )
         }
@@ -214,7 +214,7 @@ class InstanceMethodsTest {
 
         verify {
             client.get(
-                path = "/api/v2/instance",
+                path = "api/v2/instance",
                 query = null
             )
         }
@@ -231,7 +231,7 @@ class InstanceMethodsTest {
 
         verify {
             client.get(
-                path = "/api/v2/instance",
+                path = "api/v2/instance",
                 query = null
             )
         }
@@ -251,7 +251,7 @@ class InstanceMethodsTest {
 
         verify {
             client.get(
-                path = "/api/v1/instance/peers",
+                path = "api/v1/instance/peers",
                 query = null
             )
         }
@@ -271,7 +271,7 @@ class InstanceMethodsTest {
 
         verify {
             client.get(
-                path = "/api/v1/instance/peers",
+                path = "api/v1/instance/peers",
                 query = null
             )
         }
@@ -293,7 +293,7 @@ class InstanceMethodsTest {
 
         verify {
             client.get(
-                path = "/api/v1/instance/activity",
+                path = "api/v1/instance/activity",
                 query = null
             )
         }
@@ -313,7 +313,7 @@ class InstanceMethodsTest {
 
         verify {
             client.get(
-                path = "/api/v1/instance/activity",
+                path = "api/v1/instance/activity",
                 query = null
             )
         }
@@ -333,7 +333,7 @@ class InstanceMethodsTest {
 
         verify {
             client.get(
-                path = "/api/v1/instance/rules",
+                path = "api/v1/instance/rules",
                 query = null
             )
         }
@@ -355,7 +355,7 @@ class InstanceMethodsTest {
 
         verify {
             client.get(
-                path = "/api/v1/instance/domain_blocks",
+                path = "api/v1/instance/domain_blocks",
                 query = null
             )
         }
@@ -375,7 +375,7 @@ class InstanceMethodsTest {
 
         verify {
             client.get(
-                path = "/api/v1/instance/domain_blocks",
+                path = "api/v1/instance/domain_blocks",
                 query = null
             )
         }
@@ -394,7 +394,7 @@ class InstanceMethodsTest {
 
         verify {
             client.get(
-                path = "/api/v1/instance/extended_description",
+                path = "api/v1/instance/extended_description",
                 query = null
             )
         }
diff --git a/bigbone/src/test/kotlin/social/bigbone/api/method/admin/AdminIpBlockMethodsTest.kt b/bigbone/src/test/kotlin/social/bigbone/api/method/admin/AdminIpBlockMethodsTest.kt
index d9e8f38..4d1dcf2 100644
--- a/bigbone/src/test/kotlin/social/bigbone/api/method/admin/AdminIpBlockMethodsTest.kt
+++ b/bigbone/src/test/kotlin/social/bigbone/api/method/admin/AdminIpBlockMethodsTest.kt
@@ -16,7 +16,7 @@ import java.net.URLEncoder
 
 class AdminIpBlockMethodsTest {
 
-    private val adminIpBlockEndpoint = "/api/v1/admin/ip_blocks"
+    private val adminIpBlockEndpoint = "api/v1/admin/ip_blocks"
 
     @Test
     fun `Given client returning success, when getting all blocked ip addresses, then return list of ip addresses`() {