Repository: ctreminiom/go-atlassian
Pull request #222 (2023-07-01 06:04:05)

:building_construction: Improved the HTTP Client implementation on th…
…e Cloud Admin module


Patch:
diff --git a/admin/api_client_impl.go b/admin/api_client_impl.go
new file mode 100644
index 0000000..7231b58
--- /dev/null
+++ b/admin/api_client_impl.go
@@ -0,0 +1,160 @@
+package admin
+
+import (
+	"bytes"
+	"context"
+	"encoding/json"
+	"fmt"
+	"github.com/ctreminiom/go-atlassian/admin/internal"
+	model "github.com/ctreminiom/go-atlassian/pkg/infra/models"
+	"github.com/ctreminiom/go-atlassian/service/common"
+	"io"
+	"net/http"
+	"net/url"
+)
+
+const defaultApiEndpoint = "https://api.atlassian.com/"
+
+func New(httpClient common.HttpClient) (*Client, error) {
+
+	if httpClient == nil {
+		httpClient = http.DefaultClient
+	}
+
+	u, err := url.Parse(defaultApiEndpoint)
+	if err != nil {
+		return nil, err
+	}
+
+	client := &Client{
+		HTTP: httpClient,
+		Site: u,
+	}
+
+	client.Auth = internal.NewAuthenticationService(client)
+
+	client.SCIM = &internal.SCIMService{
+		User:   internal.NewSCIMUserService(client),
+		Group:  internal.NewSCIMGroupService(client),
+		Schema: internal.NewSCIMSchemaService(client),
+	}
+
+	client.Organization = internal.NewOrganizationService(
+		client,
+		internal.NewOrganizationPolicyService(client),
+		internal.NewOrganizationDirectoryService(client))
+
+	client.User = internal.NewUserService(client, internal.NewUserTokenService(client))
+
+	return client, nil
+}
+
+type Client struct {
+	HTTP         common.HttpClient
+	Site         *url.URL
+	Auth         common.Authentication
+	Organization *internal.OrganizationService
+	User         *internal.UserService
+	SCIM         *internal.SCIMService
+}
+
+func (c *Client) NewRequest(ctx context.Context, method, urlStr, type_ string, body interface{}) (*http.Request, error) {
+
+	rel, err := url.Parse(urlStr)
+	if err != nil {
+		return nil, err
+	}
+
+	u := c.Site.ResolveReference(rel)
+
+	buf := new(bytes.Buffer)
+	if body != nil {
+		if err = json.NewEncoder(buf).Encode(body); err != nil {
+			return nil, err
+		}
+	}
+
+	req, err := http.NewRequestWithContext(ctx, method, u.String(), buf)
+	if err != nil {
+		return nil, err
+	}
+	req.Header.Set("Accept", "application/json")
+
+	if body != nil && type_ == "" {
+		req.Header.Set("Content-Type", "application/json")
+	}
+
+	if body != nil && type_ != "" {
+		req.Header.Set("Content-Type", type_)
+	}
+
+	if c.Auth.GetBearerToken() != "" {
+		req.Header.Add("Authorization", fmt.Sprintf("Bearer %v", c.Auth.GetBearerToken()))
+	}
+
+	if c.Auth.HasUserAgent() {
+		req.Header.Set("User-Agent", c.Auth.GetUserAgent())
+	}
+
+	return req, nil
+}
+
+func (c *Client) Call(request *http.Request, structure interface{}) (*model.ResponseScheme, error) {
+
+	response, err := c.HTTP.Do(request)
+	if err != nil {
+		return nil, err
+	}
+
+	return c.processResponse(response, structure)
+}
+
+func (c *Client) processResponse(response *http.Response, structure interface{}) (*model.ResponseScheme, error) {
+
+	defer response.Body.Close()
+
+	res := &model.ResponseScheme{
+		Response: response,
+		Code:     response.StatusCode,
+		Endpoint: response.Request.URL.String(),
+		Method:   response.Request.Method,
+	}
+
+	responseAsBytes, err := io.ReadAll(response.Body)
+	if err != nil {
+		return res, err
+	}
+
+	res.Bytes.Write(responseAsBytes)
+
+	wasSuccess := response.StatusCode >= 200 && response.StatusCode < 300
+
+	if !wasSuccess {
+
+		switch response.StatusCode {
+
+		case http.StatusNotFound:
+			return res, model.ErrNotFound
+
+		case http.StatusUnauthorized:
+			return res, model.ErrUnauthorized
+
+		case http.StatusInternalServerError:
+			return res, model.ErrInternalError
+
+		case http.StatusBadRequest:
+			return res, model.ErrBadRequestError
+
+		default:
+			return res, model.ErrInvalidStatusCodeError
+		}
+	}
+
+	if structure != nil {
+		if err = json.Unmarshal(responseAsBytes, &structure); err != nil {
+			return res, err
+		}
+	}
+
+	return res, nil
+}
diff --git a/admin/apl_client_impl.go b/admin/apl_client_impl.go
deleted file mode 100644
index f8997ae..0000000
--- a/admin/apl_client_impl.go
+++ /dev/null
@@ -1,153 +0,0 @@
-package admin
-
-import (
-	"bytes"
-	"context"
-	"encoding/json"
-	"fmt"
-	"github.com/ctreminiom/go-atlassian/admin/internal"
-	"github.com/ctreminiom/go-atlassian/pkg/infra/models"
-	"github.com/ctreminiom/go-atlassian/service/common"
-	"io"
-	"net/http"
-	"net/url"
-	"reflect"
-)
-
-const ApiEndpoint = "https://api.atlassian.com/"
-
-type Client struct {
-	HTTP         common.HttpClient
-	Site         *url.URL
-	Auth         common.Authentication
-	Organization *internal.OrganizationService
-	User         *internal.UserService
-	SCIM         *internal.SCIMService
-}
-
-func New(httpClient common.HttpClient) (*Client, error) {
-
-	if httpClient == nil {
-		httpClient = http.DefaultClient
-	}
-
-	siteAsURL, err := url.Parse(ApiEndpoint)
-	if err != nil {
-		return nil, err
-	}
-
-	client := &Client{
-		HTTP: httpClient,
-		Site: siteAsURL,
-	}
-
-	client.Auth = internal.NewAuthenticationService(client)
-
-	client.SCIM = &internal.SCIMService{
-		User:   internal.NewSCIMUserService(client),
-		Group:  internal.NewSCIMGroupService(client),
-		Schema: internal.NewSCIMSchemaService(client),
-	}
-
-	client.Organization = internal.NewOrganizationService(
-		client,
-		internal.NewOrganizationPolicyService(client),
-		internal.NewOrganizationDirectoryService(client))
-
-	client.User = internal.NewUserService(client, internal.NewUserTokenService(client))
-
-	return client, nil
-}
-
-func (c *Client) NewFormRequest(ctx context.Context, method, apiEndpoint, contentType string, payload io.Reader) (*http.Request, error) {
-	return nil, nil
-}
-
-func (c *Client) NewRequest(ctx context.Context, method, apiEndpoint string, payload io.Reader) (*http.Request, error) {
-
-	relativePath, err := url.Parse(apiEndpoint)
-	if err != nil {
-		return nil, err
-	}
-
-	var endpoint = c.Site.ResolveReference(relativePath).String()
-
-	request, err := http.NewRequestWithContext(ctx, method, endpoint, payload)
-	if err != nil {
-		return nil, err
-	}
-
-	request.Header.Set("Accept", "application/json")
-
-	if payload != nil {
-		request.Header.Set("Content-Type", "application/json")
-	}
-
-	if c.Auth.GetBearerToken() != "" {
-		request.Header.Add("Authorization", fmt.Sprintf("Bearer %v", c.Auth.GetBearerToken()))
-	}
-
-	if c.Auth.HasUserAgent() {
-		request.Header.Set("User-Agent", c.Auth.GetUserAgent())
-	}
-
-	return request, nil
-}
-
-func (c *Client) Call(request *http.Request, structure interface{}) (*models.ResponseScheme, error) {
-
-	response, err := c.HTTP.Do(request)
-	if err != nil {
-		return nil, err
-	}
-
-	return c.TransformTheHTTPResponse(response, structure)
-}
-
-func (c *Client) TransformTheHTTPResponse(response *http.Response, structure interface{}) (*models.ResponseScheme, error) {
-
-	responseTransformed := &models.ResponseScheme{
-		Response: response,
-		Code:     response.StatusCode,
-		Endpoint: response.Request.URL.String(),
-		Method:   response.Request.Method,
-	}
-
-	responseAsBytes, err := io.ReadAll(response.Body)
-	if err != nil {
-		return responseTransformed, err
-	}
-
-	responseTransformed.Bytes.Write(responseAsBytes)
-
-	var wasSuccess = response.StatusCode >= 200 && response.StatusCode < 300
-	if !wasSuccess {
-		return responseTransformed, models.ErrInvalidStatusCodeError
-	}
-
-	if structure != nil {
-		if err = json.Unmarshal(responseAsBytes, &structure); err != nil {
-			return responseTransformed, err
-		}
-	}
-
-	return responseTransformed, nil
-}
-
-func (c *Client) TransformStructToReader(structure interface{}) (io.Reader, error) {
-
-	if structure == nil {
-		return nil, models.ErrNilPayloadError
-	}
-
-	if reflect.ValueOf(structure).Type().Kind() == reflect.Struct {
-		return nil, models.ErrNonPayloadPointerError
-	}
-
-	structureAsBodyBytes, err := json.Marshal(structure)
-	if err != nil {
-		return nil, err
-	}
-
-	return bytes.NewReader(structureAsBodyBytes), nil
-}
diff --git a/admin/internal/authentication_impl.go b/admin/internal/authentication_impl.go
index dcbda35..2bbe9ab 100644
--- a/admin/internal/authentication_impl.go
+++ b/admin/internal/authentication_impl.go
@@ -5,12 +5,12 @@ import (
 	"github.com/ctreminiom/go-atlassian/service/common"
 )
 
-func NewAuthenticationService(client service.Client) common.Authentication {
+func NewAuthenticationService(client service.Connector) common.Authentication {
 	return &AuthenticationService{c: client}
 }
 
 type AuthenticationService struct {
-	c service.Client
+	c service.Connector
 
 	basicAuthProvided bool
 	mail, token       string
@@ -26,7 +26,6 @@ func (a *AuthenticationService) SetBearerToken(token string) {
 func (a *AuthenticationService) GetBearerToken() string {
 	return a.token
 }
-
 func (a *AuthenticationService) SetExperimentalFlag() {}
 
 func (a *AuthenticationService) HasSetExperimentalFlag() bool {
diff --git a/admin/internal/organization_directory_impl.go b/admin/internal/organization_directory_impl.go
index 6158a81..a82e7dd 100644
--- a/admin/internal/organization_directory_impl.go
+++ b/admin/internal/organization_directory_impl.go
@@ -9,7 +9,7 @@ import (
 	"net/http"
 )
 
-func NewOrganizationDirectoryService(client service.Client) *OrganizationDirectoryService {
+func NewOrganizationDirectoryService(client service.Connector) *OrganizationDirectoryService {
 	return &OrganizationDirectoryService{internalClient: &internalOrganizationDirectoryServiceImpl{c: client}}
 }
 
@@ -74,7 +74,7 @@ func (o *OrganizationDirectoryService) Restore(ctx context.Context, organization
 }
 
 type internalOrganizationDirectoryServiceImpl struct {
-	c service.Client
+	c service.Connector
 }
 
 func (i *internalOrganizationDirectoryServiceImpl) Activity(ctx context.Context, organizationID, accountID string) (*model.UserProductAccessScheme, *model.ResponseScheme, error) {
@@ -89,18 +89,18 @@ func (i *internalOrganizationDirectoryServiceImpl) Activity(ctx context.Context,
 
 	endpoint := fmt.Sprintf("admin/v1/orgs/%v/directory/users/%v/last-active-dates", organizationID, accountID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	req, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
 
-	accessInfo := new(model.UserProductAccessScheme)
-	response, err := i.c.Call(request, accessInfo)
+	activity := new(model.UserProductAccessScheme)
+	res, err := i.c.Call(req, activity)
 	if err != nil {
-		return nil, response, err
+		return nil, res, err
 	}
 
-	return accessInfo, response, nil
+	return activity, res, nil
 }
 
 func (i *internalOrganizationDirectoryServiceImpl) Remove(ctx context.Context, organizationID, accountID string) (*model.ResponseScheme, error) {
@@ -115,12 +115,12 @@ func (i *internalOrganizationDirectoryServiceImpl) Remove(ctx context.Context, o
 
 	endpoint := fmt.Sprintf("admin/v1/orgs/%v/directory/users/%v", organizationID, accountID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodDelete, endpoint, nil)
+	req, err := i.c.NewRequest(ctx, http.MethodDelete, endpoint, "", nil)
 	if err != nil {
 		return nil, err
 	}
 
-	return i.c.Call(request, nil)
+	return i.c.Call(req, nil)
 }
 
 func (i *internalOrganizationDirectoryServiceImpl) Suspend(ctx context.Context, organizationID, accountID string) (*model.GenericActionSuccessScheme, *model.ResponseScheme, error) {
@@ -135,18 +135,18 @@ func (i *internalOrganizationDirectoryServiceImpl) Suspend(ctx context.Context,
 
 	endpoint := fmt.Sprintf("admin/v1/orgs/%v/directory/users/%v/suspend-access", organizationID, accountID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodPost, endpoint, nil)
+	req, err := i.c.NewRequest(ctx, http.MethodPost, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
 
 	message := new(model.GenericActionSuccessScheme)
-	response, err := i.c.Call(request, message)
+	res, err := i.c.Call(req, message)
 	if err != nil {
-		return nil, response, err
+		return nil, res, err
 	}
 
-	return message, response, nil
+	return message, res, nil
 }
 
 func (i *internalOrganizationDirectoryServiceImpl) Restore(ctx context.Context, organizationID, accountID string) (*model.GenericActionSuccessScheme, *model.ResponseScheme, error) {
@@ -161,16 +161,16 @@ func (i *internalOrganizationDirectoryServiceImpl) Restore(ctx context.Context,
 
 	endpoint := fmt.Sprintf("admin/v1/orgs/%v/directory/users/%v/restore-access", organizationID, accountID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodPost, endpoint, nil)
+	req, err := i.c.NewRequest(ctx, http.MethodPost, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
 
 	message := new(model.GenericActionSuccessScheme)
-	response, err := i.c.Call(request, message)
+	res, err := i.c.Call(req, message)
 	if err != nil {
-		return nil, response, err
+		return nil, res, err
 	}
 
-	return message, response, nil
+	return message, res, nil
 }
diff --git a/admin/internal/organization_impl.go b/admin/internal/organization_impl.go
index ccf041c..0a77e12 100644
--- a/admin/internal/organization_impl.go
+++ b/admin/internal/organization_impl.go
@@ -12,7 +12,7 @@ import (
 	"strings"
 )
 
-func NewOrganizationService(client service.Client, policy *OrganizationPolicyService, directory *OrganizationDirectoryService) *OrganizationService {
+func NewOrganizationService(client service.Connector, policy *OrganizationPolicyService, directory *OrganizationDirectoryService) *OrganizationService {
 	return &OrganizationService{internalClient: &internalOrganizationImpl{c: client}, Policy: policy, Directory: directory}
 }
 
@@ -95,7 +95,7 @@ func (o *OrganizationService) Actions(ctx context.Context, organizationID string
 }
 
 type internalOrganizationImpl struct {
-	c service.Client
+	c service.Connector
 }
 
 func (i *internalOrganizationImpl) Gets(ctx context.Context, cursor string) (*model.AdminOrganizationPageScheme, *model.ResponseScheme, error) {
@@ -110,18 +110,18 @@ func (i *internalOrganizationImpl) Gets(ctx context.Context, cursor string) (*mo
 		endpoint.WriteString(fmt.Sprintf("?%v", params.Encode()))
 	}
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint.String(), nil)
+	req, err := i.c.NewRequest(ctx, http.MethodGet, endpoint.String(), "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
 
 	organizations := new(model.AdminOrganizationPageScheme)
-	response, err := i.c.Call(request, organizations)
+	res, err := i.c.Call(req, organizations)
 	if err != nil {
-		return nil, response, err
+		return nil, res, err
 	}
 
-	return organizations, response, nil
+	return organizations, res, nil
 }
 
 func (i *internalOrganizationImpl) Get(ctx context.Context, organizationID string) (*model.AdminOrganizationScheme, *model.ResponseScheme, error) {
@@ -132,18 +132,18 @@ func (i *internalOrganizationImpl) Get(ctx context.Context, organizationID strin
 
 	endpoint := fmt.Sprintf("admin/v1/orgs/%v", organizationID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	req, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
 
 	organization := new(model.AdminOrganizationScheme)
-	response, err := i.c.Call(request, organization)
+	res, err := i.c.Call(req, organization)
 	if err != nil {
-		return nil, response, err
+		return nil, res, err
 	}
 
-	return organization, response, nil
+	return organization, res, nil
 }
 
 func (i *internalOrganizationImpl) Users(ctx context.Context, organizationID, cursor string) (*model.OrganizationUserPageScheme, *model.ResponseScheme, error) {
@@ -162,18 +162,18 @@ func (i *internalOrganizationImpl) Users(ctx context.Context, organizationID, cu
 		endpoint.WriteString(fmt.Sprintf("?%v", params.Encode()))
 	}
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint.String(), nil)
+	req, err := i.c.NewRequest(ctx, http.MethodGet, endpoint.String(), "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
 
 	users := new(model.OrganizationUserPageScheme)
-	response, err := i.c.Call(request, users)
+	res, err := i.c.Call(req, users)
 	if err != nil {
-		return nil, response, err
+		return nil, res, err
 	}
 
-	return users, response, nil
+	return users, res, nil
 }
 
 func (i *internalOrganizationImpl) Domains(ctx context.Context, organizationID, cursor string) (*model.OrganizationDomainPageScheme, *model.ResponseScheme, error) {
@@ -192,18 +192,18 @@ func (i *internalOrganizationImpl) Domains(ctx context.Context, organizationID,
 		endpoint.WriteString(fmt.Sprintf("?%v", params.Encode()))
 	}
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint.String(), nil)
+	req, err := i.c.NewRequest(ctx, http.MethodGet, endpoint.String(), "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
 
 	domains := new(model.OrganizationDomainPageScheme)
-	response, err := i.c.Call(request, domains)
+	res, err := i.c.Call(req, domains)
 	if err != nil {
-		return nil, response, err
+		return nil, res, err
 	}
 
-	return domains, response, nil
+	return domains, res, nil
 }
 
 func (i *internalOrganizationImpl) Domain(ctx context.Context, organizationID, domainID string) (*model.OrganizationDomainScheme, *model.ResponseScheme, error) {
@@ -218,18 +218,18 @@ func (i *internalOrganizationImpl) Domain(ctx context.Context, organizationID, d
 
 	endpoint := fmt.Sprintf("admin/v1/orgs/%v/domains/%v", organizationID, domainID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	req, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
 
 	domain := new(model.OrganizationDomainScheme)
-	response, err := i.c.Call(request, domain)
+	res, err := i.c.Call(req, domain)
 	if err != nil {
-		return nil, response, err
+		return nil, res, err
 	}
 
-	return domain, response, nil
+	return domain, res, nil
 }
 
 func (i *internalOrganizationImpl) Events(ctx context.Context, organizationID string, options *model.OrganizationEventOptScheme, cursor string) (*model.OrganizationEventPageScheme, *model.ResponseScheme, error) {
@@ -271,18 +271,18 @@ func (i *internalOrganizationImpl) Events(ctx context.Context, organizationID st
 		endpoint.WriteString(fmt.Sprintf("?%v", params.Encode()))
 	}
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint.String(), nil)
+	req, err := i.c.NewRequest(ctx, http.MethodGet, endpoint.String(), "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
 
 	events := new(model.OrganizationEventPageScheme)
-	response, err := i.c.Call(request, events)
+	res, err := i.c.Call(req, events)
 	if err != nil {
-		return nil, response, err
+		return nil, res, err
 	}
 
-	return events, response, nil
+	return events, res, nil
 }
 
 func (i *internalOrganizationImpl) Event(ctx context.Context, organizationID, eventID string) (*model.OrganizationEventScheme, *model.ResponseScheme, error) {
@@ -297,18 +297,18 @@ func (i *internalOrganizationImpl) Event(ctx context.Context, organizationID, ev
 
 	endpoint := fmt.Sprintf("admin/v1/orgs/%v/events/%v", organizationID, eventID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	req, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
 
 	event := new(model.OrganizationEventScheme)
-	response, err := i.c.Call(request, event)
+	res, err := i.c.Call(req, event)
 	if err != nil {
-		return nil, response, err
+		return nil, res, err
 	}
 
-	return event, response, nil
+	return event, res, nil
 }
 
 func (i *internalOrganizationImpl) Actions(ctx context.Context, organizationID string) (*model.OrganizationEventActionScheme, *model.ResponseScheme, error) {
@@ -319,16 +319,16 @@ func (i *internalOrganizationImpl) Actions(ctx context.Context, organizationID s
 
 	endpoint := fmt.Sprintf("admin/v1/orgs/%v/event-actions", organizationID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	req, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
 
 	event := new(model.OrganizationEventActionScheme)
-	response, err := i.c.Call(request, event)
+	res, err := i.c.Call(req, event)
 	if err != nil {
-		return nil, response, err
+		return nil, res, err
 	}
 
-	return event, response, nil
+	return event, res, nil
 }
diff --git a/admin/internal/organization_policy_impl.go b/admin/internal/organization_policy_impl.go
index e3854bc..6d0a33d 100644
--- a/admin/internal/organization_policy_impl.go
+++ b/admin/internal/organization_policy_impl.go
@@ -11,7 +11,7 @@ import (
 	"strings"
 )
 
-func NewOrganizationPolicyService(client service.Client) *OrganizationPolicyService {
+func NewOrganizationPolicyService(client service.Connector) *OrganizationPolicyService {
 	return &OrganizationPolicyService{internalClient: &internalOrganizationPolicyImpl{c: client}}
 }
 
@@ -65,7 +65,7 @@ func (o *OrganizationPolicyService) Delete(ctx context.Context, organizationID,
 }
 
 type internalOrganizationPolicyImpl struct {
-	c service.Client
+	c service.Connector
 }
 
 func (i *internalOrganizationPolicyImpl) Gets(ctx context.Context, organizationID, policyType, cursor string) (*model.OrganizationPolicyPageScheme, *model.ResponseScheme, error) {
@@ -90,18 +90,18 @@ func (i *internalOrganizationPolicyImpl) Gets(ctx context.Context, organizationI
 		endpoint.WriteString(fmt.Sprintf("?%v", params.Encode()))
 	}
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint.String(), nil)
+	req, err := i.c.NewRequest(ctx, http.MethodGet, endpoint.String(), "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
 
 	policies := new(model.OrganizationPolicyPageScheme)
-	response, err := i.c.Call(request, policies)
+	res, err := i.c.Call(req, policies)
 	if err != nil {
-		return nil, response, err
+		return nil, res, err
 	}
 
-	return policies, response, nil
+	return policies, res, nil
 }
 
 func (i *internalOrganizationPolicyImpl) Get(ctx context.Context, organizationID, policyID string) (*model.OrganizationPolicyScheme, *model.ResponseScheme, error) {
@@ -116,18 +116,18 @@ func (i *internalOrganizationPolicyImpl) Get(ctx context.Context, organizationID
 
 	endpoint := fmt.Sprintf("admin/v1/orgs/%v/policies/%v", organizationID, policyID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	req, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
 
 	policy := new(model.OrganizationPolicyScheme)
-	response, err := i.c.Call(request, policy)
+	res, err := i.c.Call(req, policy)
 	if err != nil {
-		return nil, response, err
+		return nil, res, err
 	}
 
-	return policy, response, nil
+	return policy, res, nil
 }
 
 func (i *internalOrganizationPolicyImpl) Create(ctx context.Context, organizationID string, payload *model.OrganizationPolicyData) (*model.OrganizationPolicyScheme, *model.ResponseScheme, error) {
@@ -136,14 +136,9 @@ func (i *internalOrganizationPolicyImpl) Create(ctx context.Context, organizatio
 		return nil, nil, model.ErrNoAdminOrganizationError
 	}
 
-	reader, err := i.c.TransformStructToReader(payload)
-	if err != nil {
-		return nil, nil, err
-	}
-
 	endpoint := fmt.Sprintf("admin/v1/orgs/%v/policies", organizationID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodPost, endpoint, reader)
+	request, err := i.c.NewRequest(ctx, http.MethodPost, endpoint, "", payload)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -167,14 +162,9 @@ func (i *internalOrganizationPolicyImpl) Update(ctx context.Context, organizatio
 		return nil, nil, model.ErrNoAdminPolicyError
 	}
 
-	reader, err := i.c.TransformStructToReader(payload)
-	if err != nil {
-		return nil, nil, err
-	}
-
 	endpoint := fmt.Sprintf("admin/v1/orgs/%v/policies/%v", organizationID, policyID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodPut, endpoint, reader)
+	request, err := i.c.NewRequest(ctx, http.MethodPut, endpoint, "", payload)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -200,7 +190,7 @@ func (i *internalOrganizationPolicyImpl) Delete(ctx context.Context, organizatio
 
 	endpoint := fmt.Sprintf("admin/v1/orgs/%v/policies/%v", organizationID, policyID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodDelete, endpoint, nil)
+	request, err := i.c.NewRequest(ctx, http.MethodDelete, endpoint, "", nil)
 	if err != nil {
 		return nil, err
 	}
diff --git a/admin/internal/scim_group_impl.go b/admin/internal/scim_group_impl.go
index 537b005..f5a4ea7 100644
--- a/admin/internal/scim_group_impl.go
+++ b/admin/internal/scim_group_impl.go
@@ -11,7 +11,7 @@ import (
 	"strconv"
 )
 
-func NewSCIMGroupService(client service.Client) *SCIMGroupService {
+func NewSCIMGroupService(client service.Connector) *SCIMGroupService {
 	return &SCIMGroupService{internalClient: &internalSCIMGroupImpl{c: client}}
 }
 
@@ -86,7 +86,7 @@ func (s *SCIMGroupService) Path(ctx context.Context, directoryID, groupID string
 }
 
 type internalSCIMGroupImpl struct {
-	c service.Client
+	c service.Connector
 }
 
 func (i *internalSCIMGroupImpl) Gets(ctx context.Context, directoryID, filter string, startAt, maxResults int) (*model.ScimGroupPageScheme, *model.ResponseScheme, error) {
@@ -105,7 +105,7 @@ func (i *internalSCIMGroupImpl) Gets(ctx context.Context, directoryID, filter st
 
 	endpoint := fmt.Sprintf("scim/directory/%v/Groups?%v", directoryID, params.Encode())
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -131,7 +131,7 @@ func (i *internalSCIMGroupImpl) Get(ctx context.Context, directoryID, groupID st
 
 	endpoint := fmt.Sprintf("scim/directory/%v/Groups/%v", directoryID, groupID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -161,18 +161,9 @@ func (i *internalSCIMGroupImpl) Update(ctx context.Context, directoryID, groupID
 
 	endpoint := fmt.Sprintf("scim/directory/%v/Groups/%v", directoryID, groupID)
 
-	payload := struct {
-		DisplayName string `json:"displayName"`
-	}{
-		DisplayName: newGroupName,
-	}
+	payload := map[string]interface{}{"displayName": newGroupName}
 
-	reader, err := i.c.TransformStructToReader(&payload)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	request, err := i.c.NewRequest(ctx, http.MethodPut, endpoint, reader)
+	request, err := i.c.NewRequest(ctx, http.MethodPut, endpoint, "", payload)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -198,7 +189,7 @@ func (i *internalSCIMGroupImpl) Delete(ctx context.Context, directoryID, groupID
 
 	endpoint := fmt.Sprintf("scim/directory/%v/Groups/%v", directoryID, groupID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodDelete, endpoint, nil)
+	request, err := i.c.NewRequest(ctx, http.MethodDelete, endpoint, "", nil)
 	if err != nil {
 		return nil, err
 	}
@@ -216,20 +207,11 @@ func (i *internalSCIMGroupImpl) Create(ctx context.Context, directoryID, groupNa
 		return nil, nil, model.ErrNoAdminGroupNameError
 	}
 
-	payload := struct {
-		DisplayName string `json:"displayName"`
-	}{
-		DisplayName: groupName,
-	}
-
-	reader, err := i.c.TransformStructToReader(&payload)
-	if err != nil {
-		return nil, nil, err
-	}
+	payload := map[string]interface{}{"displayName": groupName}
 
 	endpoint := fmt.Sprintf("scim/directory/%v/Groups", directoryID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodPost, endpoint, reader)
+	request, err := i.c.NewRequest(ctx, http.MethodPost, endpoint, "", payload)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -253,14 +235,9 @@ func (i *internalSCIMGroupImpl) Path(ctx context.Context, directoryID, groupID s
 		return nil, nil, model.ErrNoAdminGroupIDError
 	}
 
-	reader, err := i.c.TransformStructToReader(payload)
-	if err != nil {
-		return nil, nil, err
-	}
-
 	endpoint := fmt.Sprintf("scim/directory/%v/Groups/%v", directoryID, groupID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodPatch, endpoint, reader)
+	request, err := i.c.NewRequest(ctx, http.MethodPatch, endpoint, "", payload)
 	if err != nil {
 		return nil, nil, err
 	}
diff --git a/admin/internal/scim_schema_impl.go b/admin/internal/scim_schema_impl.go
index 7d7f1f9..01ad1ce 100644
--- a/admin/internal/scim_schema_impl.go
+++ b/admin/internal/scim_schema_impl.go
@@ -9,7 +9,7 @@ import (
 	"net/http"
 )
 
-func NewSCIMSchemaService(client service.Client) *SCIMSchemaService {
+func NewSCIMSchemaService(client service.Connector) *SCIMSchemaService {
 	return &SCIMSchemaService{internalClient: &internalSCIMSchemaImpl{c: client}}
 }
 
@@ -75,7 +75,7 @@ func (s *SCIMSchemaService) Feature(ctx context.Context, directoryID string) (*m
 }
 
 type internalSCIMSchemaImpl struct {
-	c service.Client
+	c service.Connector
 }
 
 func (i *internalSCIMSchemaImpl) Gets(ctx context.Context, directoryID string) (*model.SCIMSchemasScheme, *model.ResponseScheme, error) {
@@ -86,7 +86,7 @@ func (i *internalSCIMSchemaImpl) Gets(ctx context.Context, directoryID string) (
 
 	endpoint := fmt.Sprintf("scim/directory/%v/Schemas", directoryID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -108,7 +108,7 @@ func (i *internalSCIMSchemaImpl) Group(ctx context.Context, directoryID string)
 
 	endpoint := fmt.Sprintf("scim/directory/%v/Schemas/urn:ietf:params:scim:schemas:core:2.0:Group", directoryID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -130,7 +130,7 @@ func (i *internalSCIMSchemaImpl) User(ctx context.Context, directoryID string) (
 
 	endpoint := fmt.Sprintf("scim/directory/%v/Schemas/urn:ietf:params:scim:schemas:core:2.0:User", directoryID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -152,7 +152,7 @@ func (i *internalSCIMSchemaImpl) Enterprise(ctx context.Context, directoryID str
 
 	endpoint := fmt.Sprintf("scim/directory/%v/Schemas/urn:ietf:params:scim:schemas:extension:enterprise:2.0:User", directoryID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -174,7 +174,7 @@ func (i *internalSCIMSchemaImpl) Feature(ctx context.Context, directoryID string
 
 	endpoint := fmt.Sprintf("scim/directory/%v/ServiceProviderConfig", directoryID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
diff --git a/admin/internal/scim_user_impl.go b/admin/internal/scim_user_impl.go
index 2c63ecf..fbe21fd 100644
--- a/admin/internal/scim_user_impl.go
+++ b/admin/internal/scim_user_impl.go
@@ -12,7 +12,7 @@ import (
 	"strings"
 )
 
-func NewSCIMUserService(client service.Client) *SCIMUserService {
+func NewSCIMUserService(client service.Connector) *SCIMUserService {
 	return &SCIMUserService{internalClient: &internalSCIMUserImpl{c: client}}
 }
 
@@ -97,7 +97,7 @@ func (s *SCIMUserService) Update(ctx context.Context, directoryID, userID string
 }
 
 type internalSCIMUserImpl struct {
-	c service.Client
+	c service.Connector
 }
 
 func (i *internalSCIMUserImpl) Create(ctx context.Context, directoryID string, payload *model.SCIMUserScheme, attributes, excludedAttributes []string) (*model.SCIMUserScheme, *model.ResponseScheme, error) {
@@ -106,11 +106,6 @@ func (i *internalSCIMUserImpl) Create(ctx context.Context, directoryID string, p
 		return nil, nil, model.ErrNoAdminDirectoryIDError
 	}
 
-	reader, err := i.c.TransformStructToReader(payload)
-	if err != nil {
-		return nil, nil, err
-	}
-
 	params := url.Values{}
 
 	if len(attributes) != 0 {
@@ -128,7 +123,7 @@ func (i *internalSCIMUserImpl) Create(ctx context.Context, directoryID string, p
 		endpoint.WriteString(fmt.Sprintf("?%v", params.Encode()))
 	}
 
-	request, err := i.c.NewRequest(ctx, http.MethodPost, endpoint.String(), reader)
+	request, err := i.c.NewRequest(ctx, http.MethodPost, endpoint.String(), "", payload)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -169,7 +164,7 @@ func (i *internalSCIMUserImpl) Gets(ctx context.Context, directoryID string, opt
 
 	endpoint := fmt.Sprintf("scim/directory/%v/Users?%v", directoryID, params.Encode())
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -209,7 +204,7 @@ func (i *internalSCIMUserImpl) Get(ctx context.Context, directoryID, userID stri
 		endpoint.WriteString(fmt.Sprintf("?%v", params.Encode()))
 	}
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint.String(), nil)
+	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint.String(), "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -235,7 +230,7 @@ func (i *internalSCIMUserImpl) Deactivate(ctx context.Context, directoryID, user
 
 	endpoint := fmt.Sprintf("scim/directory/%v/Users/%v", directoryID, userID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodDelete, endpoint, nil)
+	request, err := i.c.NewRequest(ctx, http.MethodDelete, endpoint, "", nil)
 	if err != nil {
 		return nil, err
 	}
@@ -270,12 +265,7 @@ func (i *internalSCIMUserImpl) Path(ctx context.Context, directoryID, userID str
 		endpoint.WriteString(fmt.Sprintf("?%v", params.Encode()))
 	}
 
-	reader, err := i.c.TransformStructToReader(payload)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	request, err := i.c.NewRequest(ctx, http.MethodPatch, endpoint.String(), reader)
+	request, err := i.c.NewRequest(ctx, http.MethodPatch, endpoint.String(), "", payload)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -315,12 +305,7 @@ func (i *internalSCIMUserImpl) Update(ctx context.Context, directoryID, userID s
 		endpoint.WriteString(fmt.Sprintf("?%v", params.Encode()))
 	}
 
-	reader, err := i.c.TransformStructToReader(payload)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	request, err := i.c.NewRequest(ctx, http.MethodPut, endpoint.String(), reader)
+	request, err := i.c.NewRequest(ctx, http.MethodPut, endpoint.String(), "", payload)
 	if err != nil {
 		return nil, nil, err
 	}
diff --git a/admin/internal/user_impl.go b/admin/internal/user_impl.go
index d781fc0..cbdda8f 100644
--- a/admin/internal/user_impl.go
+++ b/admin/internal/user_impl.go
@@ -6,13 +6,12 @@ import (
 	model "github.com/ctreminiom/go-atlassian/pkg/infra/models"
 	"github.com/ctreminiom/go-atlassian/service"
 	"github.com/ctreminiom/go-atlassian/service/admin"
-	"io"
 	"net/http"
 	"net/url"
 	"strings"
 )
 
-func NewUserService(client service.Client, token *UserTokenService) *UserService {
+func NewUserService(client service.Connector, token *UserTokenService) *UserService {
 	return &UserService{
 		internalClient: &internalUserImpl{c: client},
 		Token:          token,
@@ -78,7 +77,7 @@ func (u *UserService) Enable(ctx context.Context, accountID string) (*model.Resp
 }
 
 type internalUserImpl struct {
-	c service.Client
+	c service.Connector
 }
 
 func (i *internalUserImpl) Permissions(ctx context.Context, accountID string, privileges []string) (*model.AdminUserPermissionScheme, *model.ResponseScheme, error) {
@@ -98,7 +97,7 @@ func (i *internalUserImpl) Permissions(ctx context.Context, accountID string, pr
 		endpoint.WriteString(fmt.Sprintf("?%v", params.Encode()))
 	}
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint.String(), nil)
+	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint.String(), "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -120,7 +119,7 @@ func (i *internalUserImpl) Get(ctx context.Context, accountID string) (*model.Ad
 
 	endpoint := fmt.Sprintf("users/%v/manage/profile", accountID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -140,14 +139,9 @@ func (i *internalUserImpl) Update(ctx context.Context, accountID string, payload
 		return nil, nil, model.ErrNoAdminAccountIDError
 	}
 
-	reader, err := i.c.TransformStructToReader(payload)
-	if err != nil {
-		return nil, nil, err
-	}
-
 	endpoint := fmt.Sprintf("users/%v/manage/profile", accountID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodPatch, endpoint, reader)
+	request, err := i.c.NewRequest(ctx, http.MethodPatch, endpoint, "", payload)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -169,26 +163,12 @@ func (i *internalUserImpl) Disable(ctx context.Context, accountID, message strin
 
 	endpoint := fmt.Sprintf("users/%v/manage/lifecycle/disable", accountID)
 
-	var (
-		reader io.Reader
-		err    error
-	)
-
+	payload := map[string]interface{}{}
 	if message != "" {
-
-		payload := struct {
-			Message string `json:"message"`
-		}{
-			Message: message,
-		}
-
-		reader, err = i.c.TransformStructToReader(&payload)
-		if err != nil {
-			return nil, err
-		}
+		payload["message"] = message
 	}
 
-	request, err := i.c.NewRequest(ctx, http.MethodPost, endpoint, reader)
+	request, err := i.c.NewRequest(ctx, http.MethodPost, endpoint, "", payload)
 	if err != nil {
 		return nil, err
 	}
@@ -204,7 +184,7 @@ func (i *internalUserImpl) Enable(ctx context.Context, accountID string) (*model
 
 	endpoint := fmt.Sprintf("users/%v/manage/lifecycle/enable", accountID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodPost, endpoint, nil)
+	request, err := i.c.NewRequest(ctx, http.MethodPost, endpoint, "", nil)
 	if err != nil {
 		return nil, err
 	}
diff --git a/admin/internal/user_token_impl.go b/admin/internal/user_token_impl.go
index e1e7735..fec6906 100644
--- a/admin/internal/user_token_impl.go
+++ b/admin/internal/user_token_impl.go
@@ -9,7 +9,7 @@ import (
 	"net/http"
 )
 
-func NewUserTokenService(client service.Client) *UserTokenService {
+func NewUserTokenService(client service.Connector) *UserTokenService {
 	return &UserTokenService{internalClient: &internalUserTokenImpl{c: client}}
 }
 
@@ -36,7 +36,7 @@ func (u *UserTokenService) Delete(ctx context.Context, accountID, tokenID string
 }
 
 type internalUserTokenImpl struct {
-	c service.Client
+	c service.Connector
 }
 
 func (i *internalUserTokenImpl) Gets(ctx context.Context, accountID string) ([]*model.UserTokensScheme, *model.ResponseScheme, error) {
@@ -47,7 +47,7 @@ func (i *internalUserTokenImpl) Gets(ctx context.Context, accountID string) ([]*
 
 	endpoint := fmt.Sprintf("users/%v/manage/api-tokens", accountID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, nil)
+	request, err := i.c.NewRequest(ctx, http.MethodGet, endpoint, "", nil)
 	if err != nil {
 		return nil, nil, err
 	}
@@ -73,7 +73,7 @@ func (i *internalUserTokenImpl) Delete(ctx context.Context, accountID, tokenID s
 
 	endpoint := fmt.Sprintf("users/%v/manage/api-tokens/%v", accountID, tokenID)
 
-	request, err := i.c.NewRequest(ctx, http.MethodDelete, endpoint, nil)
+	request, err := i.c.NewRequest(ctx, http.MethodDelete, endpoint, "", nil)
 	if err != nil {
 		return nil, err
 	}


Test patch:
diff --git a/admin/apl_client_impl_test.go b/admin/api_client_impl_test.go
similarity index 64%
rename from admin/apl_client_impl_test.go
rename to admin/api_client_impl_test.go
index 4326afe..0375787 100644
--- a/admin/apl_client_impl_test.go
+++ b/admin/api_client_impl_test.go
@@ -3,15 +3,12 @@ package admin
 import (
 	"bytes"
 	"context"
-	"encoding/json"
-	"errors"
 	"github.com/ctreminiom/go-atlassian/admin/internal"
-	"github.com/ctreminiom/go-atlassian/pkg/infra/models"
+	model "github.com/ctreminiom/go-atlassian/pkg/infra/models"
 	"github.com/ctreminiom/go-atlassian/service/common"
 	"github.com/ctreminiom/go-atlassian/service/mocks"
 	"github.com/stretchr/testify/assert"
 	"io"
-	"io/ioutil"
 	"net/http"
 	"net/url"
 	"strings"
@@ -22,28 +19,54 @@ func TestClient_Call(t *testing.T) {
 
 	expectedResponse := &http.Response{
 		StatusCode: http.StatusOK,
-		Body:       ioutil.NopCloser(strings.NewReader("Hello, world!")),
+		Body:       io.NopCloser(strings.NewReader("Hello, world!")),
 		Request: &http.Request{
 			Method: http.MethodGet,
 			URL:    &url.URL{},
 		},
 	}
 
-	nonExpectedResponse := &http.Response{
+	badRequestResponse := &http.Response{
 		StatusCode: http.StatusBadRequest,
-		Body:       ioutil.NopCloser(strings.NewReader("Hello, world!")),
+		Body:       io.NopCloser(strings.NewReader("Hello, world!")),
 		Request: &http.Request{
 			Method: http.MethodGet,
 			URL:    &url.URL{},
 		},
 	}
 
-	type fields struct {
-		HTTP           common.HttpClient
-		Site           *url.URL
-		Authentication common.Authentication
+	internalServerResponse := &http.Response{
+		StatusCode: http.StatusInternalServerError,
+		Body:       io.NopCloser(strings.NewReader("Hello, world!")),
+		Request: &http.Request{
+			Method: http.MethodGet,
+			URL:    &url.URL{},
+		},
+	}
+
+	unauthorizedResponse := &http.Response{
+		StatusCode: http.StatusUnauthorized,
+		Body:       io.NopCloser(strings.NewReader("Hello, world!")),
+		Request: &http.Request{
+			Method: http.MethodGet,
+			URL:    &url.URL{},
+		},
+	}
+
+	notFoundResponse := &http.Response{
+		StatusCode: http.StatusNotFound,
+		Body:       io.NopCloser(strings.NewReader("Hello, world!")),
+		Request: &http.Request{
+			Method: http.MethodGet,
+			URL:    &url.URL{},
+		},
 	}
 
+	type fields struct {
+		HTTP common.HttpClient
+		Site *url.URL
+		Auth common.Authentication
+	}
 	type args struct {
 		request   *http.Request
 		structure interface{}
@@ -52,9 +75,9 @@ func TestClient_Call(t *testing.T) {
 	testCases := []struct {
 		name    string
 		fields  fields
-		on      func(*fields)
 		args    args
-		want    *models.ResponseScheme
+		on      func(*fields)
+		want    *model.ResponseScheme
 		wantErr bool
 		Err     error
 	}{
@@ -73,7 +96,7 @@ func TestClient_Call(t *testing.T) {
 				request:   nil,
 				structure: nil,
 			},
-			want: &models.ResponseScheme{
+			want: &model.ResponseScheme{
 				Response: expectedResponse,
 				Code:     http.StatusOK,
 				Method:   http.MethodGet,
@@ -83,13 +106,13 @@ func TestClient_Call(t *testing.T) {
 		},
 
 		{
-			name: "when the response status is not valid",
+			name: "when the response status is a bad request",
 			on: func(fields *fields) {
 
 				client := mocks.NewHttpClient(t)
 
 				client.On("Do", (*http.Request)(nil)).
-					Return(nonExpectedResponse, nil)
+					Return(badRequestResponse, nil)
 
 				fields.HTTP = client
 			},
@@ -97,34 +120,92 @@ func TestClient_Call(t *testing.T) {
 				request:   nil,
 				structure: nil,
 			},
-			want: &models.ResponseScheme{
-				Response: nonExpectedResponse,
+			want: &model.ResponseScheme{
+				Response: badRequestResponse,
 				Code:     http.StatusBadRequest,
 				Method:   http.MethodGet,
 				Bytes:    *bytes.NewBufferString("Hello, world!"),
 			},
 			wantErr: true,
-			Err:     models.ErrInvalidStatusCodeError,
+			Err:     model.ErrBadRequestError,
 		},
 
 		{
-			name: "when the http callback cannot be executed",
+			name: "when the response status is an internal service error",
 			on: func(fields *fields) {
 
 				client := mocks.NewHttpClient(t)
 
 				client.On("Do", (*http.Request)(nil)).
-					Return(nil, errors.New("error, unable to execute the http call"))
+					Return(internalServerResponse, nil)
 
 				fields.HTTP = client
 			},
+			args: args{
+				request:   nil,
+				structure: nil,
+			},
+			want: &model.ResponseScheme{
+				Response: internalServerResponse,
+				Code:     http.StatusInternalServerError,
+				Method:   http.MethodGet,
+				Bytes:    *bytes.NewBufferString("Hello, world!"),
+			},
 			wantErr: true,
-			Err:     errors.New("error, unable to execute the http call"),
+			Err:     model.ErrInternalError,
 		},
-	}
 
-	for _, testCase := range testCases {
+		{
+			name: "when the response status is a not found",
+			on: func(fields *fields) {
 
+				client := mocks.NewHttpClient(t)
+
+				client.On("Do", (*http.Request)(nil)).
+					Return(notFoundResponse, nil)
+
+				fields.HTTP = client
+			},
+			args: args{
+				request:   nil,
+				structure: nil,
+			},
+			want: &model.ResponseScheme{
+				Response: notFoundResponse,
+				Code:     http.StatusNotFound,
+				Method:   http.MethodGet,
+				Bytes:    *bytes.NewBufferString("Hello, world!"),
+			},
+			wantErr: true,
+			Err:     model.ErrNotFound,
+		},
+
+		{
+			name: "when the response status is unauthorized",
+			on: func(fields *fields) {
+
+				client := mocks.NewHttpClient(t)
+
+				client.On("Do", (*http.Request)(nil)).
+					Return(unauthorizedResponse, nil)
+
+				fields.HTTP = client
+			},
+			args: args{
+				request:   nil,
+				structure: nil,
+			},
+			want: &model.ResponseScheme{
+				Response: unauthorizedResponse,
+				Code:     http.StatusUnauthorized,
+				Method:   http.MethodGet,
+				Bytes:    *bytes.NewBufferString("Hello, world!"),
+			},
+			wantErr: true,
+			Err:     model.ErrUnauthorized,
+		},
+	}
+	for _, testCase := range testCases {
 		t.Run(testCase.name, func(t *testing.T) {
 
 			if testCase.on != nil {
@@ -134,7 +215,6 @@ func TestClient_Call(t *testing.T) {
 			c := &Client{
 				HTTP: testCase.fields.HTTP,
 				Site: testCase.fields.Site,
-				Auth: testCase.fields.Authentication,
 			}
 
 			got, err := c.Call(testCase.args.request, testCase.args.structure)
@@ -151,46 +231,126 @@ func TestClient_Call(t *testing.T) {
 				assert.NoError(t, err)
 				assert.Equal(t, got, testCase.want)
 			}
+
 		})
 	}
 }
 
-func TestNew(t *testing.T) {
+func TestClient_NewRequest(t *testing.T) {
 
-	mockClient, err := New(http.DefaultClient)
+	authMocked := internal.NewAuthenticationService(nil)
+	authMocked.SetBasicAuth("mail", "token")
+	authMocked.SetUserAgent("firefox")
+	authMocked.SetExperimentalFlag()
+
+	siteAsURL, err := url.Parse("https://ctreminiom.atlassian.net")
 	if err != nil {
 		t.Fatal(err)
 	}
 
-	mockClient.Auth.SetBearerToken("token-sample")
-	mockClient.Auth.SetUserAgent("aaa")
+	requestMocked, err := http.NewRequestWithContext(context.TODO(),
+		http.MethodGet,
+		"https://ctreminiom.atlassian.net/rest/2/issue/attachment",
+		bytes.NewReader([]byte("Hello World")),
+	)
+
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	requestMocked.Header.Set("Accept", "application/json")
+	requestMocked.Header.Set("Content-Type", "application/json")
+
+	type fields struct {
+		HTTP common.HttpClient
+		Auth common.Authentication
+		Site *url.URL
+	}
 
 	type args struct {
-		httpClient common.HttpClient
+		ctx    context.Context
+		method string
+		urlStr string
+		type_  string
+		body   interface{}
 	}
 
 	testCases := []struct {
 		name    string
+		fields  fields
 		args    args
-		on      func(*args)
-		want    *Client
+		want    *http.Request
 		wantErr bool
-		Err     error
 	}{
 		{
 			name: "when the parameters are correct",
+			fields: fields{
+				HTTP: http.DefaultClient,
+				Auth: authMocked,
+				Site: siteAsURL,
+			},
 			args: args{
-				httpClient: http.DefaultClient,
+				ctx:    context.TODO(),
+				method: http.MethodGet,
+				urlStr: "rest/2/issue/attachment",
+				type_:  "",
+				body:   bytes.NewReader([]byte("Hello World")),
 			},
-			want:    mockClient,
+			want:    requestMocked,
 			wantErr: false,
 		},
+
+		{
+			name: "when the url cannot be parsed",
+			fields: fields{
+				HTTP: http.DefaultClient,
+				Auth: internal.NewAuthenticationService(nil),
+				Site: siteAsURL,
+			},
+			args: args{
+				ctx:    context.TODO(),
+				method: http.MethodGet,
+				urlStr: " https://zhidao.baidu.com/special/view?id=49105a24626975510000&preview=1",
+				body:   bytes.NewReader([]byte("Hello World")),
+			},
+			want:    nil,
+			wantErr: true,
+		},
+
+		{
+			name: "when the request cannot be created",
+			fields: fields{
+				HTTP: http.DefaultClient,
+				Auth: internal.NewAuthenticationService(nil),
+				Site: siteAsURL,
+			},
+			args: args{
+				ctx:    nil,
+				method: http.MethodGet,
+				urlStr: "rest/2/issue/attachment",
+				body:   bytes.NewReader([]byte("Hello World")),
+			},
+			want:    requestMocked,
+			wantErr: true,
+		},
 	}
 
 	for _, testCase := range testCases {
 		t.Run(testCase.name, func(t *testing.T) {
 
-			gotClient, err := New(testCase.args.httpClient)
+			c := &Client{
+				HTTP: testCase.fields.HTTP,
+				Auth: testCase.fields.Auth,
+				Site: testCase.fields.Site,
+			}
+
+			got, err := c.NewRequest(
+				testCase.args.ctx,
+				testCase.args.method,
+				testCase.args.urlStr,
+				testCase.args.type_,
+				testCase.args.body,
+			)
 
 			if testCase.wantErr {
 
@@ -199,18 +359,17 @@ func TestNew(t *testing.T) {
 				}
 
 				assert.Error(t, err)
-				assert.EqualError(t, err, testCase.Err.Error())
-
 			} else {
+
 				assert.NoError(t, err)
-				assert.NotEqual(t, gotClient, nil)
+				assert.NotEqual(t, got, nil)
 			}
 
 		})
 	}
 }
 
-func TestClient_TransformTheHTTPResponse(t *testing.T) {
+func TestClient_processResponse(t *testing.T) {
 
 	expectedJsonResponse := `
 	{
@@ -222,7 +381,7 @@ func TestClient_TransformTheHTTPResponse(t *testing.T) {
 
 	expectedResponse := &http.Response{
 		StatusCode: http.StatusOK,
-		Body:       ioutil.NopCloser(strings.NewReader(expectedJsonResponse)),
+		Body:       io.NopCloser(strings.NewReader(expectedJsonResponse)),
 		Request: &http.Request{
 			Method: http.MethodGet,
 			URL:    &url.URL{},
@@ -234,7 +393,6 @@ func TestClient_TransformTheHTTPResponse(t *testing.T) {
 		Site           *url.URL
 		Authentication common.Authentication
 	}
-
 	type args struct {
 		response  *http.Response
 		structure interface{}
@@ -244,7 +402,7 @@ func TestClient_TransformTheHTTPResponse(t *testing.T) {
 		name    string
 		fields  fields
 		args    args
-		want    *models.ResponseScheme
+		want    *model.ResponseScheme
 		wantErr bool
 		Err     error
 	}{
@@ -253,9 +411,9 @@ func TestClient_TransformTheHTTPResponse(t *testing.T) {
 			fields: fields{},
 			args: args{
 				response:  expectedResponse,
-				structure: models.BoardScheme{},
+				structure: model.BoardScheme{},
 			},
-			want: &models.ResponseScheme{
+			want: &model.ResponseScheme{
 				Response: expectedResponse,
 				Code:     http.StatusOK,
 				Method:   http.MethodGet,
@@ -264,16 +422,16 @@ func TestClient_TransformTheHTTPResponse(t *testing.T) {
 			wantErr: false,
 		},
 	}
-
 	for _, testCase := range testCases {
 		t.Run(testCase.name, func(t *testing.T) {
+
 			c := &Client{
 				HTTP: testCase.fields.HTTP,
 				Site: testCase.fields.Site,
 				Auth: testCase.fields.Authentication,
 			}
 
-			got, err := c.TransformTheHTTPResponse(testCase.args.response, testCase.args.structure)
+			got, err := c.processResponse(testCase.args.response, testCase.args.structure)
 
 			if testCase.wantErr {
 
@@ -288,85 +446,49 @@ func TestClient_TransformTheHTTPResponse(t *testing.T) {
 				assert.NoError(t, err)
 				assert.NotEqual(t, got, nil)
 			}
+
 		})
 	}
 }
 
-func TestClient_TransformStructToReader(t *testing.T) {
-
-	expectedBytes, err := json.Marshal(&models.BoardScheme{
-		Name: "BoardConnector Sample",
-		Type: "Scrum",
-	})
+func TestNew(t *testing.T) {
 
+	mockClient, err := New(http.DefaultClient)
 	if err != nil {
 		t.Fatal(err)
 	}
 
-	type fields struct {
-		HTTP           common.HttpClient
-		Site           *url.URL
-		Authentication common.Authentication
-	}
+	mockClient.Auth.SetBasicAuth("test", "test")
+	mockClient.Auth.SetUserAgent("aaa")
 
 	type args struct {
-		structure interface{}
+		httpClient common.HttpClient
+		site       string
 	}
 
 	testCases := []struct {
 		name    string
-		fields  fields
 		args    args
-		want    io.Reader
+		want    *Client
 		wantErr bool
 		Err     error
 	}{
+
 		{
 			name: "when the parameters are correct",
 			args: args{
-				structure: &models.BoardScheme{
-					Name: "BoardConnector Sample",
-					Type: "Scrum",
-				},
+				httpClient: http.DefaultClient,
+				site:       "https://ctreminiom.atlassian.net",
 			},
-			want:    bytes.NewReader(expectedBytes),
+			want:    mockClient,
 			wantErr: false,
 		},
-
-		{
-			name: "when the payload provided is not a pointer",
-			args: args{
-				structure: models.BoardScheme{
-					Name: "BoardConnector Sample",
-					Type: "Scrum",
-				},
-			},
-			want:    bytes.NewReader(expectedBytes),
-			wantErr: true,
-			Err:     models.ErrNonPayloadPointerError,
-		},
-
-		{
-			name: "when the payload is not provided",
-			args: args{
-				structure: nil,
-			},
-			want:    bytes.NewReader(expectedBytes),
-			wantErr: true,
-			Err:     models.ErrNilPayloadError,
-		},
 	}
 
 	for _, testCase := range testCases {
-
 		t.Run(testCase.name, func(t *testing.T) {
-			c := &Client{
-				HTTP: testCase.fields.HTTP,
-				Site: testCase.fields.Site,
-				Auth: testCase.fields.Authentication,
-			}
 
-			got, err := c.TransformStructToReader(testCase.args.structure)
+			gotClient, err := New(testCase.args.httpClient)
 
 			if testCase.wantErr {
 
@@ -379,127 +501,7 @@ func TestClient_TransformStructToReader(t *testing.T) {
 
 			} else {
 				assert.NoError(t, err)
-				assert.NotEqual(t, got, nil)
-			}
-		})
-	}
-}
-
-func TestClient_NewRequest(t *testing.T) {
-
-	authMocked := internal.NewAuthenticationService(nil)
-	authMocked.SetBasicAuth("mail", "token")
-	authMocked.SetUserAgent("firefox")
-
-	siteAsURL, err := url.Parse("https://ctreminiom.atlassian.net")
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	requestMocked, err := http.NewRequestWithContext(context.TODO(),
-		http.MethodGet,
-		"https://ctreminiom.atlassian.net/rest/2/issue/attachment",
-		bytes.NewReader([]byte("Hello World")),
-	)
-
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	requestMocked.Header.Set("Accept", "application/json")
-	requestMocked.Header.Set("Content-Type", "application/json")
-
-	type fields struct {
-		HTTP common.HttpClient
-		Auth common.Authentication
-		Site *url.URL
-	}
-
-	type args struct {
-		ctx         context.Context
-		method      string
-		apiEndpoint string
-		payload     io.Reader
-	}
-
-	testCases := []struct {
-		name    string
-		fields  fields
-		args    args
-		want    *http.Request
-		wantErr bool
-	}{
-		{
-			name: "when the parameters are correct",
-			fields: fields{
-				HTTP: http.DefaultClient,
-				Auth: authMocked,
-				Site: siteAsURL,
-			},
-			args: args{
-				ctx:         context.TODO(),
-				method:      http.MethodGet,
-				apiEndpoint: "rest/2/issue/attachment",
-				payload:     bytes.NewReader([]byte("Hello World")),
-			},
-			want:    requestMocked,
-			wantErr: false,
-		},
-
-		{
-			name: "when the url cannot be parsed",
-			fields: fields{
-				HTTP: http.DefaultClient,
-				Auth: internal.NewAuthenticationService(nil),
-				Site: siteAsURL,
-			},
-			args: args{
-				ctx:         context.TODO(),
-				method:      http.MethodGet,
-				apiEndpoint: " https://zhidao.baidu.com/special/view?id=49105a24626975510000&preview=1",
-				payload:     bytes.NewReader([]byte("Hello World")),
-			},
-			want:    nil,
-			wantErr: true,
-		},
-
-		{
-			name: "when the request cannot be created",
-			fields: fields{
-				HTTP: http.DefaultClient,
-				Auth: internal.NewAuthenticationService(nil),
-				Site: siteAsURL,
-			},
-			args: args{
-				ctx:         nil,
-				method:      http.MethodGet,
-				apiEndpoint: "rest/2/issue/attachment",
-				payload:     bytes.NewReader([]byte("Hello World")),
-			},
-			want:    requestMocked,
-			wantErr: true,
-		},
-	}
-	for _, testCase := range testCases {
-		t.Run(testCase.name, func(t *testing.T) {
-			c := &Client{
-				HTTP: testCase.fields.HTTP,
-				Auth: testCase.fields.Auth,
-				Site: testCase.fields.Site,
-			}
-
-			got, err := c.NewRequest(testCase.args.ctx, testCase.args.method, testCase.args.apiEndpoint, testCase.args.payload)
-
-			if testCase.wantErr {
-
-				if err != nil {
-					t.Logf("error returned: %v", err.Error())
-				}
-
-				assert.Error(t, err)
-			} else {
-				assert.NoError(t, err)
-				assert.NotEqual(t, got, nil)
+				assert.NotEqual(t, gotClient, nil)
 			}
 		})
 	}
diff --git a/admin/internal/authentication_impl_test.go b/admin/internal/authentication_impl_test.go
index 33b541e..052f346 100644
--- a/admin/internal/authentication_impl_test.go
+++ b/admin/internal/authentication_impl_test.go
@@ -12,7 +12,7 @@ import (
 func TestAuthenticationService_GetBasicAuth(t *testing.T) {
 
 	type fields struct {
-		c                 service.Client
+		c                 service.Connector
 		basicAuthProvided bool
 		mail              string
 		token             string
@@ -28,7 +28,7 @@ func TestAuthenticationService_GetBasicAuth(t *testing.T) {
 		{
 			name: "when the basic auth is already set",
 			fields: fields{
-				c:     mocks.NewClient(t),
+				c:     mocks.NewConnector(t),
 				mail:  "mail",
 				token: "token",
 			},
@@ -62,7 +62,7 @@ func TestAuthenticationService_GetBasicAuth(t *testing.T) {
 
 func TestAuthenticationService_GetUserAgent(t *testing.T) {
 	type fields struct {
-		c                 service.Client
+		c                 service.Connector
 		basicAuthProvided bool
 		mail              string
 		token             string
@@ -77,7 +77,7 @@ func TestAuthenticationService_GetUserAgent(t *testing.T) {
 		{
 			name: "when the user agent is already set",
 			fields: fields{
-				c:     mocks.NewClient(t),
+				c:     mocks.NewConnector(t),
 				agent: "firefox-09",
 			},
 			want: "firefox-09",
@@ -102,7 +102,7 @@ func TestAuthenticationService_GetUserAgent(t *testing.T) {
 
 func TestAuthenticationService_HasBasicAuth(t *testing.T) {
 	type fields struct {
-		c                 service.Client
+		c                 service.Connector
 		basicAuthProvided bool
 		mail              string
 		token             string
@@ -117,7 +117,7 @@ func TestAuthenticationService_HasBasicAuth(t *testing.T) {
 		{
 			name: "when the params are correct",
 			fields: fields{
-				c:                 mocks.NewClient(t),
+				c:                 mocks.NewConnector(t),
 				basicAuthProvided: true,
 			},
 			want: true,
@@ -143,7 +143,7 @@ func TestAuthenticationService_HasBasicAuth(t *testing.T) {
 
 func TestAuthenticationService_HasUserAgent(t *testing.T) {
 	type fields struct {
-		c                 service.Client
+		c                 service.Connector
 		basicAuthProvided bool
 		mail              string
 		token             string
@@ -184,10 +184,10 @@ func TestAuthenticationService_HasUserAgent(t *testing.T) {
 
 func TestNewAuthenticationService(t *testing.T) {
 
-	clientMocked := mocks.NewClient(t)
+	clientMocked := mocks.NewConnector(t)
 
 	type args struct {
-		client service.Client
+		client service.Connector
 	}
 	testCases := []struct {
 		name string
@@ -214,7 +214,7 @@ func TestNewAuthenticationService(t *testing.T) {
 func TestAuthenticationService_SetUserAgent(t *testing.T) {
 
 	type fields struct {
-		c                 service.Client
+		c                 service.Connector
 		basicAuthProvided bool
 		mail              string
 		token             string
@@ -254,7 +254,7 @@ func TestAuthenticationService_SetUserAgent(t *testing.T) {
 func TestAuthenticationService_SetBasicAuth(t *testing.T) {
 
 	type fields struct {
-		c                 service.Client
+		c                 service.Connector
 		basicAuthProvided bool
 		mail              string
 		token             string
@@ -297,7 +297,7 @@ func TestAuthenticationService_SetBasicAuth(t *testing.T) {
 func TestAuthenticationService_HasSetExperimentalFlag(t *testing.T) {
 
 	type fields struct {
-		c                 service.Client
+		c                 service.Connector
 		basicAuthProvided bool
 		mail              string
 		token             string
@@ -335,7 +335,7 @@ func TestAuthenticationService_HasSetExperimentalFlag(t *testing.T) {
 
 func TestAuthenticationService_GetBearerToken(t *testing.T) {
 	type fields struct {
-		c                 service.Client
+		c                 service.Connector
 		basicAuthProvided bool
 		mail              string
 		token             string
@@ -350,7 +350,7 @@ func TestAuthenticationService_GetBearerToken(t *testing.T) {
 		{
 			name: "when the parameters are correct",
 			fields: fields{
-				c:     mocks.NewClient(t),
+				c:     mocks.NewConnector(t),
 				token: "token-sample",
 			},
 			want: "token-sample",
@@ -373,7 +373,7 @@ func TestAuthenticationService_GetBearerToken(t *testing.T) {
 
 func TestAuthenticationService_SetBearerToken(t *testing.T) {
 	type fields struct {
-		c                 service.Client
+		c                 service.Connector
 		basicAuthProvided bool
 		mail              string
 		token             string
@@ -415,7 +415,7 @@ func TestAuthenticationService_SetBearerToken(t *testing.T) {
 
 func TestAuthenticationService_SetExperimentalFlag(t *testing.T) {
 	type fields struct {
-		c                 service.Client
+		c                 service.Connector
 		basicAuthProvided bool
 		mail              string
 		token             string
diff --git a/admin/internal/organization_directory_impl_test.go b/admin/internal/organization_directory_impl_test.go
index b509ba8..5ca0df6 100644
--- a/admin/internal/organization_directory_impl_test.go
+++ b/admin/internal/organization_directory_impl_test.go
@@ -14,7 +14,7 @@ import (
 func Test_internalOrganizationDirectoryServiceImpl_Activity(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -39,12 +39,13 @@ func Test_internalOrganizationDirectoryServiceImpl_Activity(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-id-sample/directory/users/account-id-sample/last-active-dates",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -87,12 +88,13 @@ func Test_internalOrganizationDirectoryServiceImpl_Activity(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-id-sample/directory/users/account-id-sample/last-active-dates",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -111,9 +113,9 @@ func Test_internalOrganizationDirectoryServiceImpl_Activity(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationDirectoryService(testCase.fields.c)
+			newOrganizationDirectoryService := NewOrganizationDirectoryService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Activity(testCase.args.ctx, testCase.args.organizationID,
+			gotResult, gotResponse, err := newOrganizationDirectoryService.Activity(testCase.args.ctx, testCase.args.organizationID,
 				testCase.args.accountID)
 
 			if testCase.wantErr {
@@ -138,7 +140,7 @@ func Test_internalOrganizationDirectoryServiceImpl_Activity(t *testing.T) {
 func Test_internalOrganizationDirectoryServiceImpl_Remove(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -163,12 +165,13 @@ func Test_internalOrganizationDirectoryServiceImpl_Remove(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodDelete,
 					"admin/v1/orgs/organization-id-sample/directory/users/account-id-sample",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -211,12 +214,13 @@ func Test_internalOrganizationDirectoryServiceImpl_Remove(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodDelete,
 					"admin/v1/orgs/organization-id-sample/directory/users/account-id-sample",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -235,9 +239,9 @@ func Test_internalOrganizationDirectoryServiceImpl_Remove(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationDirectoryService(testCase.fields.c)
+			newOrganizationDirectoryService := NewOrganizationDirectoryService(testCase.fields.c)
 
-			gotResponse, err := service.Remove(testCase.args.ctx, testCase.args.organizationID,
+			gotResponse, err := newOrganizationDirectoryService.Remove(testCase.args.ctx, testCase.args.organizationID,
 				testCase.args.accountID)
 
 			if testCase.wantErr {
@@ -261,7 +265,7 @@ func Test_internalOrganizationDirectoryServiceImpl_Remove(t *testing.T) {
 func Test_internalOrganizationDirectoryServiceImpl_Suspend(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -286,12 +290,13 @@ func Test_internalOrganizationDirectoryServiceImpl_Suspend(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPost,
 					"admin/v1/orgs/organization-id-sample/directory/users/account-id-sample/suspend-access",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -334,12 +339,13 @@ func Test_internalOrganizationDirectoryServiceImpl_Suspend(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPost,
 					"admin/v1/orgs/organization-id-sample/directory/users/account-id-sample/suspend-access",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -358,9 +364,9 @@ func Test_internalOrganizationDirectoryServiceImpl_Suspend(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationDirectoryService(testCase.fields.c)
+			newOrganizationDirectoryService := NewOrganizationDirectoryService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Suspend(testCase.args.ctx, testCase.args.organizationID,
+			gotResult, gotResponse, err := newOrganizationDirectoryService.Suspend(testCase.args.ctx, testCase.args.organizationID,
 				testCase.args.accountID)
 
 			if testCase.wantErr {
@@ -385,7 +391,7 @@ func Test_internalOrganizationDirectoryServiceImpl_Suspend(t *testing.T) {
 func Test_internalOrganizationDirectoryServiceImpl_Restore(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -410,12 +416,13 @@ func Test_internalOrganizationDirectoryServiceImpl_Restore(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPost,
 					"admin/v1/orgs/organization-id-sample/directory/users/account-id-sample/restore-access",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -458,12 +465,13 @@ func Test_internalOrganizationDirectoryServiceImpl_Restore(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPost,
 					"admin/v1/orgs/organization-id-sample/directory/users/account-id-sample/restore-access",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -482,9 +490,9 @@ func Test_internalOrganizationDirectoryServiceImpl_Restore(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationDirectoryService(testCase.fields.c)
+			newOrganizationDirectoryService := NewOrganizationDirectoryService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Restore(testCase.args.ctx, testCase.args.organizationID,
+			gotResult, gotResponse, err := newOrganizationDirectoryService.Restore(testCase.args.ctx, testCase.args.organizationID,
 				testCase.args.accountID)
 
 			if testCase.wantErr {
diff --git a/admin/internal/organization_impl_test.go b/admin/internal/organization_impl_test.go
index bed43b8..0cce3cc 100644
--- a/admin/internal/organization_impl_test.go
+++ b/admin/internal/organization_impl_test.go
@@ -15,7 +15,7 @@ import (
 func Test_internalOrganizationImpl_Gets(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -39,12 +39,13 @@ func Test_internalOrganizationImpl_Gets(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs?cursor=cursor-sample-uuid",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -66,12 +67,13 @@ func Test_internalOrganizationImpl_Gets(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs?cursor=cursor-sample-uuid",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -90,9 +92,9 @@ func Test_internalOrganizationImpl_Gets(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationService(testCase.fields.c, nil, nil)
+			newOrganizationService := NewOrganizationService(testCase.fields.c, nil, nil)
 
-			gotResult, gotResponse, err := service.Gets(testCase.args.ctx, testCase.args.cursor)
+			gotResult, gotResponse, err := newOrganizationService.Gets(testCase.args.ctx, testCase.args.cursor)
 
 			if testCase.wantErr {
 
@@ -116,7 +118,7 @@ func Test_internalOrganizationImpl_Gets(t *testing.T) {
 func Test_internalOrganizationImpl_Get(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -140,12 +142,13 @@ func Test_internalOrganizationImpl_Get(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-sample-uuid",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -177,12 +180,13 @@ func Test_internalOrganizationImpl_Get(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-sample-uuid",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -201,9 +205,9 @@ func Test_internalOrganizationImpl_Get(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationService(testCase.fields.c, nil, nil)
+			newOrganizationService := NewOrganizationService(testCase.fields.c, nil, nil)
 
-			gotResult, gotResponse, err := service.Get(testCase.args.ctx, testCase.args.organizationID)
+			gotResult, gotResponse, err := newOrganizationService.Get(testCase.args.ctx, testCase.args.organizationID)
 
 			if testCase.wantErr {
 
@@ -227,7 +231,7 @@ func Test_internalOrganizationImpl_Get(t *testing.T) {
 func Test_internalOrganizationImpl_Users(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -252,12 +256,13 @@ func Test_internalOrganizationImpl_Users(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-sample-uuid/users?cursor=cursor-sample-uuid",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -290,12 +295,13 @@ func Test_internalOrganizationImpl_Users(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-sample-uuid/users?cursor=cursor-sample-uuid",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -314,9 +320,9 @@ func Test_internalOrganizationImpl_Users(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationService(testCase.fields.c, nil, nil)
+			newOrganizationService := NewOrganizationService(testCase.fields.c, nil, nil)
 
-			gotResult, gotResponse, err := service.Users(testCase.args.ctx, testCase.args.organizationID, testCase.args.cursor)
+			gotResult, gotResponse, err := newOrganizationService.Users(testCase.args.ctx, testCase.args.organizationID, testCase.args.cursor)
 
 			if testCase.wantErr {
 
@@ -340,7 +346,7 @@ func Test_internalOrganizationImpl_Users(t *testing.T) {
 func Test_internalOrganizationImpl_Domains(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -365,12 +371,13 @@ func Test_internalOrganizationImpl_Domains(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-sample-uuid/domains?cursor=cursor-sample-uuid",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -403,12 +410,13 @@ func Test_internalOrganizationImpl_Domains(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-sample-uuid/domains?cursor=cursor-sample-uuid",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -427,9 +435,9 @@ func Test_internalOrganizationImpl_Domains(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationService(testCase.fields.c, nil, nil)
+			newOrganizationService := NewOrganizationService(testCase.fields.c, nil, nil)
 
-			gotResult, gotResponse, err := service.Domains(testCase.args.ctx, testCase.args.organizationID, testCase.args.cursor)
+			gotResult, gotResponse, err := newOrganizationService.Domains(testCase.args.ctx, testCase.args.organizationID, testCase.args.cursor)
 
 			if testCase.wantErr {
 
@@ -453,7 +461,7 @@ func Test_internalOrganizationImpl_Domains(t *testing.T) {
 func Test_internalOrganizationImpl_Domain(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -478,12 +486,13 @@ func Test_internalOrganizationImpl_Domain(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-sample-uuid/domains/domain-sample-uuid",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -526,12 +535,13 @@ func Test_internalOrganizationImpl_Domain(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-sample-uuid/domains/domain-sample-uuid",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -550,9 +560,9 @@ func Test_internalOrganizationImpl_Domain(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationService(testCase.fields.c, nil, nil)
+			newOrganizationService := NewOrganizationService(testCase.fields.c, nil, nil)
 
-			gotResult, gotResponse, err := service.Domain(testCase.args.ctx, testCase.args.organizationID, testCase.args.domainID)
+			gotResult, gotResponse, err := newOrganizationService.Domain(testCase.args.ctx, testCase.args.organizationID, testCase.args.domainID)
 
 			if testCase.wantErr {
 
@@ -586,7 +596,7 @@ func Test_internalOrganizationImpl_Events(t *testing.T) {
 	}
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -619,12 +629,13 @@ func Test_internalOrganizationImpl_Events(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-sample-uuid/events?action=user_added_to_group&cursor=cursor-id-sample&from=1589197526&q=qq&to=1605177926",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -663,12 +674,13 @@ func Test_internalOrganizationImpl_Events(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-sample-uuid/events?action=user_added_to_group&cursor=cursor-id-sample&from=1589197526&q=qq&to=1605177926",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -687,9 +699,9 @@ func Test_internalOrganizationImpl_Events(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationService(testCase.fields.c, nil, nil)
+			newOrganizationService := NewOrganizationService(testCase.fields.c, nil, nil)
 
-			gotResult, gotResponse, err := service.Events(testCase.args.ctx, testCase.args.organizationID,
+			gotResult, gotResponse, err := newOrganizationService.Events(testCase.args.ctx, testCase.args.organizationID,
 				testCase.args.options, testCase.args.cursor)
 
 			if testCase.wantErr {
@@ -714,7 +726,7 @@ func Test_internalOrganizationImpl_Events(t *testing.T) {
 func Test_internalOrganizationImpl_Event(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -739,12 +751,13 @@ func Test_internalOrganizationImpl_Event(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-sample-uuid/events/event-sample-uuid",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -787,12 +800,13 @@ func Test_internalOrganizationImpl_Event(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-sample-uuid/events/event-sample-uuid",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -811,9 +825,9 @@ func Test_internalOrganizationImpl_Event(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationService(testCase.fields.c, nil, nil)
+			newOrganizationService := NewOrganizationService(testCase.fields.c, nil, nil)
 
-			gotResult, gotResponse, err := service.Event(testCase.args.ctx, testCase.args.organizationID, testCase.args.eventID)
+			gotResult, gotResponse, err := newOrganizationService.Event(testCase.args.ctx, testCase.args.organizationID, testCase.args.eventID)
 
 			if testCase.wantErr {
 
@@ -837,7 +851,7 @@ func Test_internalOrganizationImpl_Event(t *testing.T) {
 func Test_internalOrganizationImpl_Actions(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -861,12 +875,13 @@ func Test_internalOrganizationImpl_Actions(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-sample-uuid/event-actions",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -888,12 +903,13 @@ func Test_internalOrganizationImpl_Actions(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-sample-uuid/event-actions",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -912,9 +928,9 @@ func Test_internalOrganizationImpl_Actions(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationService(testCase.fields.c, nil, nil)
+			newOrganizationService := NewOrganizationService(testCase.fields.c, nil, nil)
 
-			gotResult, gotResponse, err := service.Actions(testCase.args.ctx, testCase.args.organizationID)
+			gotResult, gotResponse, err := newOrganizationService.Actions(testCase.args.ctx, testCase.args.organizationID)
 
 			if testCase.wantErr {
 
@@ -930,7 +946,6 @@ func Test_internalOrganizationImpl_Actions(t *testing.T) {
 				assert.NotEqual(t, gotResponse, nil)
 				assert.NotEqual(t, gotResult, nil)
 			}
-
 		})
 	}
 }
diff --git a/admin/internal/organization_policy_impl_test.go b/admin/internal/organization_policy_impl_test.go
index d45d9e4..c74b2ea 100644
--- a/admin/internal/organization_policy_impl_test.go
+++ b/admin/internal/organization_policy_impl_test.go
@@ -1,7 +1,6 @@
 package internal
 
 import (
-	"bytes"
 	"context"
 	"errors"
 	model "github.com/ctreminiom/go-atlassian/pkg/infra/models"
@@ -15,7 +14,7 @@ import (
 func Test_internalOrganizationPolicyImpl_Gets(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -41,12 +40,13 @@ func Test_internalOrganizationPolicyImpl_Gets(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-id-sample/policies?cursor=cursor-sample-uuid&type=policy-type-sample",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -80,12 +80,13 @@ func Test_internalOrganizationPolicyImpl_Gets(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-id-sample/policies?cursor=cursor-sample-uuid&type=policy-type-sample",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -104,9 +105,9 @@ func Test_internalOrganizationPolicyImpl_Gets(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationPolicyService(testCase.fields.c)
+			newOrganizationPolicyService := NewOrganizationPolicyService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Gets(testCase.args.ctx, testCase.args.organizationID,
+			gotResult, gotResponse, err := newOrganizationPolicyService.Gets(testCase.args.ctx, testCase.args.organizationID,
 				testCase.args.policyType, testCase.args.cursor)
 
 			if testCase.wantErr {
@@ -131,7 +132,7 @@ func Test_internalOrganizationPolicyImpl_Gets(t *testing.T) {
 func Test_internalOrganizationPolicyImpl_Get(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -156,12 +157,13 @@ func Test_internalOrganizationPolicyImpl_Get(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-id-sample/policies/policy-id-sample",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -204,12 +206,13 @@ func Test_internalOrganizationPolicyImpl_Get(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"admin/v1/orgs/organization-id-sample/policies/policy-id-sample",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -228,9 +231,9 @@ func Test_internalOrganizationPolicyImpl_Get(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationPolicyService(testCase.fields.c)
+			newOrganizationPolicyService := NewOrganizationPolicyService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Get(testCase.args.ctx, testCase.args.organizationID,
+			gotResult, gotResponse, err := newOrganizationPolicyService.Get(testCase.args.ctx, testCase.args.organizationID,
 				testCase.args.policyID)
 
 			if testCase.wantErr {
@@ -264,7 +267,7 @@ func Test_internalOrganizationPolicyImpl_Create(t *testing.T) {
 	}
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -290,17 +293,14 @@ func Test_internalOrganizationPolicyImpl_Create(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPost,
 					"admin/v1/orgs/organization-id-sample/policies",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, nil)
 
 				client.On("Call",
@@ -332,17 +332,14 @@ func Test_internalOrganizationPolicyImpl_Create(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPost,
 					"admin/v1/orgs/organization-id-sample/policies",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
 				fields.c = client
@@ -359,9 +356,9 @@ func Test_internalOrganizationPolicyImpl_Create(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationPolicyService(testCase.fields.c)
+			newOrganizationPolicyService := NewOrganizationPolicyService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Create(testCase.args.ctx, testCase.args.organizationID,
+			gotResult, gotResponse, err := newOrganizationPolicyService.Create(testCase.args.ctx, testCase.args.organizationID,
 				testCase.args.payload)
 
 			if testCase.wantErr {
@@ -395,7 +392,7 @@ func Test_internalOrganizationPolicyImpl_Update(t *testing.T) {
 	}
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -422,17 +419,14 @@ func Test_internalOrganizationPolicyImpl_Update(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPut,
 					"admin/v1/orgs/organization-id-sample/policies/policy-id-sample",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, nil)
 
 				client.On("Call",
@@ -475,17 +469,14 @@ func Test_internalOrganizationPolicyImpl_Update(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPut,
 					"admin/v1/orgs/organization-id-sample/policies/policy-id-sample",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
 				fields.c = client
@@ -502,9 +493,9 @@ func Test_internalOrganizationPolicyImpl_Update(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationPolicyService(testCase.fields.c)
+			newOrganizationPolicyService := NewOrganizationPolicyService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Update(testCase.args.ctx, testCase.args.organizationID, testCase.args.policyID,
+			gotResult, gotResponse, err := newOrganizationPolicyService.Update(testCase.args.ctx, testCase.args.organizationID, testCase.args.policyID,
 				testCase.args.payload)
 
 			if testCase.wantErr {
@@ -529,7 +520,7 @@ func Test_internalOrganizationPolicyImpl_Update(t *testing.T) {
 func Test_internalOrganizationPolicyImpl_Delete(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -554,12 +545,13 @@ func Test_internalOrganizationPolicyImpl_Delete(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodDelete,
 					"admin/v1/orgs/organization-id-sample/policies/policy-id-sample",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -602,12 +594,13 @@ func Test_internalOrganizationPolicyImpl_Delete(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodDelete,
 					"admin/v1/orgs/organization-id-sample/policies/policy-id-sample",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -625,9 +618,9 @@ func Test_internalOrganizationPolicyImpl_Delete(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewOrganizationPolicyService(testCase.fields.c)
+			newOrganizationPolicyService := NewOrganizationPolicyService(testCase.fields.c)
 
-			gotResponse, err := service.Delete(testCase.args.ctx, testCase.args.organizationID, testCase.args.policyID)
+			gotResponse, err := newOrganizationPolicyService.Delete(testCase.args.ctx, testCase.args.organizationID, testCase.args.policyID)
 
 			if testCase.wantErr {
 
diff --git a/admin/internal/scim_group_impl_test.go b/admin/internal/scim_group_impl_test.go
index da8c1b7..5c3c0c9 100644
--- a/admin/internal/scim_group_impl_test.go
+++ b/admin/internal/scim_group_impl_test.go
@@ -1,7 +1,6 @@
 package internal
 
 import (
-	"bytes"
 	"context"
 	"errors"
 	model "github.com/ctreminiom/go-atlassian/pkg/infra/models"
@@ -15,7 +14,7 @@ import (
 func Test_internalSCIMGroupImpl_Gets(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -43,12 +42,13 @@ func Test_internalSCIMGroupImpl_Gets(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Groups?count=50&filter=filter-sample&startIndex=50",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -83,12 +83,13 @@ func Test_internalSCIMGroupImpl_Gets(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Groups?count=50&filter=filter-sample&startIndex=50",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -107,9 +108,9 @@ func Test_internalSCIMGroupImpl_Gets(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMGroupService(testCase.fields.c)
+			newSCIMGroupService := NewSCIMGroupService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Gets(testCase.args.ctx, testCase.args.directoryID,
+			gotResult, gotResponse, err := newSCIMGroupService.Gets(testCase.args.ctx, testCase.args.directoryID,
 				testCase.args.filter, testCase.args.startAt, testCase.args.maxResults)
 
 			if testCase.wantErr {
@@ -134,7 +135,7 @@ func Test_internalSCIMGroupImpl_Gets(t *testing.T) {
 func Test_internalSCIMGroupImpl_Get(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -159,12 +160,13 @@ func Test_internalSCIMGroupImpl_Get(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Groups/group-id-sample",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -207,12 +209,13 @@ func Test_internalSCIMGroupImpl_Get(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Groups/group-id-sample",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -231,9 +234,9 @@ func Test_internalSCIMGroupImpl_Get(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMGroupService(testCase.fields.c)
+			newSCIMGroupService := NewSCIMGroupService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Get(testCase.args.ctx, testCase.args.directoryID,
+			gotResult, gotResponse, err := newSCIMGroupService.Get(testCase.args.ctx, testCase.args.directoryID,
 				testCase.args.groupID)
 
 			if testCase.wantErr {
@@ -258,7 +261,7 @@ func Test_internalSCIMGroupImpl_Get(t *testing.T) {
 func Test_internalSCIMGroupImpl_Delete(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -283,12 +286,13 @@ func Test_internalSCIMGroupImpl_Delete(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodDelete,
 					"scim/directory/direction-id-sample/Groups/group-id-sample",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -331,12 +335,13 @@ func Test_internalSCIMGroupImpl_Delete(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodDelete,
 					"scim/directory/direction-id-sample/Groups/group-id-sample",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -355,9 +360,9 @@ func Test_internalSCIMGroupImpl_Delete(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMGroupService(testCase.fields.c)
+			newSCIMGroupService := NewSCIMGroupService(testCase.fields.c)
 
-			gotResponse, err := service.Delete(testCase.args.ctx, testCase.args.directoryID,
+			gotResponse, err := newSCIMGroupService.Delete(testCase.args.ctx, testCase.args.directoryID,
 				testCase.args.groupID)
 
 			if testCase.wantErr {
@@ -380,14 +385,10 @@ func Test_internalSCIMGroupImpl_Delete(t *testing.T) {
 
 func Test_internalSCIMGroupImpl_Create(t *testing.T) {
 
-	payloadMocked := &struct {
-		DisplayName string `json:"displayName"`
-	}{
-		DisplayName: "group-name-sample",
-	}
+	payloadMocked := map[string]interface{}{"displayName": "group-name-sample"}
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -412,17 +413,14 @@ func Test_internalSCIMGroupImpl_Create(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPost,
 					"scim/directory/direction-id-sample/Groups",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, nil)
 
 				client.On("Call",
@@ -464,17 +462,14 @@ func Test_internalSCIMGroupImpl_Create(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPost,
 					"scim/directory/direction-id-sample/Groups",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
 				fields.c = client
@@ -492,9 +487,9 @@ func Test_internalSCIMGroupImpl_Create(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMGroupService(testCase.fields.c)
+			newSCIMGroupService := NewSCIMGroupService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Create(testCase.args.ctx, testCase.args.directoryID,
+			gotResult, gotResponse, err := newSCIMGroupService.Create(testCase.args.ctx, testCase.args.directoryID,
 				testCase.args.groupName)
 
 			if testCase.wantErr {
@@ -518,14 +513,10 @@ func Test_internalSCIMGroupImpl_Create(t *testing.T) {
 
 func Test_internalSCIMGroupImpl_Update(t *testing.T) {
 
-	payloadMocked := &struct {
-		DisplayName string `json:"displayName"`
-	}{
-		DisplayName: "group-name-sample",
-	}
+	payloadMocked := map[string]interface{}{"displayName": "group-name-sample"}
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -551,17 +542,14 @@ func Test_internalSCIMGroupImpl_Update(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPut,
 					"scim/directory/direction-id-sample/Groups/group-id-sample",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, nil)
 
 				client.On("Call",
@@ -615,17 +603,14 @@ func Test_internalSCIMGroupImpl_Update(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPut,
 					"scim/directory/direction-id-sample/Groups/group-id-sample",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
 				fields.c = client
@@ -643,9 +628,9 @@ func Test_internalSCIMGroupImpl_Update(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMGroupService(testCase.fields.c)
+			newSCIMGroupService := NewSCIMGroupService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Update(testCase.args.ctx, testCase.args.directoryID,
+			gotResult, gotResponse, err := newSCIMGroupService.Update(testCase.args.ctx, testCase.args.directoryID,
 				testCase.args.groupID, testCase.args.newGroupName)
 
 			if testCase.wantErr {
@@ -686,7 +671,7 @@ func Test_internalSCIMGroupImpl_Path(t *testing.T) {
 	}
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -713,17 +698,14 @@ func Test_internalSCIMGroupImpl_Path(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPatch,
 					"scim/directory/direction-id-sample/Groups/group-id-sample",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, nil)
 
 				client.On("Call",
@@ -766,17 +748,14 @@ func Test_internalSCIMGroupImpl_Path(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPatch,
 					"scim/directory/direction-id-sample/Groups/group-id-sample",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
 				fields.c = client
@@ -794,9 +773,9 @@ func Test_internalSCIMGroupImpl_Path(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMGroupService(testCase.fields.c)
+			newSCIMGroupService := NewSCIMGroupService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Path(testCase.args.ctx, testCase.args.directoryID,
+			gotResult, gotResponse, err := newSCIMGroupService.Path(testCase.args.ctx, testCase.args.directoryID,
 				testCase.args.groupID, testCase.args.payload)
 
 			if testCase.wantErr {
diff --git a/admin/internal/scim_schema_impl_test.go b/admin/internal/scim_schema_impl_test.go
index 08751b5..28cf035 100644
--- a/admin/internal/scim_schema_impl_test.go
+++ b/admin/internal/scim_schema_impl_test.go
@@ -14,7 +14,7 @@ import (
 func Test_internalSCIMSchemaImpl_Gets(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -38,12 +38,13 @@ func Test_internalSCIMSchemaImpl_Gets(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Schemas",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -75,12 +76,13 @@ func Test_internalSCIMSchemaImpl_Gets(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Schemas",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -99,9 +101,9 @@ func Test_internalSCIMSchemaImpl_Gets(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMSchemaService(testCase.fields.c)
+			newSCIMSchemaService := NewSCIMSchemaService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Gets(testCase.args.ctx, testCase.args.directoryID)
+			gotResult, gotResponse, err := newSCIMSchemaService.Gets(testCase.args.ctx, testCase.args.directoryID)
 
 			if testCase.wantErr {
 
@@ -125,7 +127,7 @@ func Test_internalSCIMSchemaImpl_Gets(t *testing.T) {
 func Test_internalSCIMSchemaImpl_Group(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -149,12 +151,13 @@ func Test_internalSCIMSchemaImpl_Group(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Schemas/urn:ietf:params:scim:schemas:core:2.0:Group",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -186,12 +189,13 @@ func Test_internalSCIMSchemaImpl_Group(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Schemas/urn:ietf:params:scim:schemas:core:2.0:Group",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -210,9 +214,9 @@ func Test_internalSCIMSchemaImpl_Group(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMSchemaService(testCase.fields.c)
+			newSCIMSchemaService := NewSCIMSchemaService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Group(testCase.args.ctx, testCase.args.directoryID)
+			gotResult, gotResponse, err := newSCIMSchemaService.Group(testCase.args.ctx, testCase.args.directoryID)
 
 			if testCase.wantErr {
 
@@ -236,7 +240,7 @@ func Test_internalSCIMSchemaImpl_Group(t *testing.T) {
 func Test_internalSCIMSchemaImpl_User(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -260,12 +264,13 @@ func Test_internalSCIMSchemaImpl_User(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Schemas/urn:ietf:params:scim:schemas:core:2.0:User",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -297,12 +302,13 @@ func Test_internalSCIMSchemaImpl_User(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Schemas/urn:ietf:params:scim:schemas:core:2.0:User",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -321,9 +327,9 @@ func Test_internalSCIMSchemaImpl_User(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMSchemaService(testCase.fields.c)
+			newSCIMSchemaService := NewSCIMSchemaService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.User(testCase.args.ctx, testCase.args.directoryID)
+			gotResult, gotResponse, err := newSCIMSchemaService.User(testCase.args.ctx, testCase.args.directoryID)
 
 			if testCase.wantErr {
 
@@ -347,7 +353,7 @@ func Test_internalSCIMSchemaImpl_User(t *testing.T) {
 func Test_internalSCIMSchemaImpl_Enterprise(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -371,12 +377,13 @@ func Test_internalSCIMSchemaImpl_Enterprise(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Schemas/urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -408,12 +415,13 @@ func Test_internalSCIMSchemaImpl_Enterprise(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Schemas/urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -432,9 +440,9 @@ func Test_internalSCIMSchemaImpl_Enterprise(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMSchemaService(testCase.fields.c)
+			newSCIMSchemaService := NewSCIMSchemaService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Enterprise(testCase.args.ctx, testCase.args.directoryID)
+			gotResult, gotResponse, err := newSCIMSchemaService.Enterprise(testCase.args.ctx, testCase.args.directoryID)
 
 			if testCase.wantErr {
 
@@ -458,7 +466,7 @@ func Test_internalSCIMSchemaImpl_Enterprise(t *testing.T) {
 func Test_internalSCIMSchemaImpl_Feature(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -482,12 +490,13 @@ func Test_internalSCIMSchemaImpl_Feature(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/ServiceProviderConfig",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -519,12 +528,13 @@ func Test_internalSCIMSchemaImpl_Feature(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/ServiceProviderConfig",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -543,9 +553,9 @@ func Test_internalSCIMSchemaImpl_Feature(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMSchemaService(testCase.fields.c)
+			newSCIMSchemaService := NewSCIMSchemaService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Feature(testCase.args.ctx, testCase.args.directoryID)
+			gotResult, gotResponse, err := newSCIMSchemaService.Feature(testCase.args.ctx, testCase.args.directoryID)
 
 			if testCase.wantErr {
 
diff --git a/admin/internal/scim_user_impl_test.go b/admin/internal/scim_user_impl_test.go
index 28ed23b..be5afa8 100644
--- a/admin/internal/scim_user_impl_test.go
+++ b/admin/internal/scim_user_impl_test.go
@@ -1,7 +1,6 @@
 package internal
 
 import (
-	"bytes"
 	"context"
 	"errors"
 	model "github.com/ctreminiom/go-atlassian/pkg/infra/models"
@@ -15,7 +14,7 @@ import (
 func Test_internalSCIMUserImpl_Gets(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -48,12 +47,13 @@ func Test_internalSCIMUserImpl_Gets(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Users?attributes=attributes&count=50&excludedAttributes=attributes&filter=users&startIndex=0",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -92,12 +92,13 @@ func Test_internalSCIMUserImpl_Gets(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Users?attributes=attributes&count=50&excludedAttributes=attributes&filter=users&startIndex=0",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -116,9 +117,9 @@ func Test_internalSCIMUserImpl_Gets(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMUserService(testCase.fields.c)
+			newSCIMUserService := NewSCIMUserService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Gets(testCase.args.ctx, testCase.args.directoryID, testCase.args.opts, testCase.args.startIndex,
+			gotResult, gotResponse, err := newSCIMUserService.Gets(testCase.args.ctx, testCase.args.directoryID, testCase.args.opts, testCase.args.startIndex,
 				testCase.args.count)
 
 			if testCase.wantErr {
@@ -143,7 +144,7 @@ func Test_internalSCIMUserImpl_Gets(t *testing.T) {
 func Test_internalSCIMUserImpl_Get(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -171,12 +172,13 @@ func Test_internalSCIMUserImpl_Get(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Users/user-id-uuid-sample?attributes=groups&excludedAttributes=roles",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -221,12 +223,13 @@ func Test_internalSCIMUserImpl_Get(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"scim/directory/direction-id-sample/Users/user-id-uuid-sample?attributes=groups&excludedAttributes=roles",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -245,9 +248,9 @@ func Test_internalSCIMUserImpl_Get(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMUserService(testCase.fields.c)
+			newSCIMUserService := NewSCIMUserService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Get(testCase.args.ctx, testCase.args.directoryID, testCase.args.userID, testCase.args.attributes,
+			gotResult, gotResponse, err := newSCIMUserService.Get(testCase.args.ctx, testCase.args.directoryID, testCase.args.userID, testCase.args.attributes,
 				testCase.args.excludedAttributes)
 
 			if testCase.wantErr {
@@ -272,7 +275,7 @@ func Test_internalSCIMUserImpl_Get(t *testing.T) {
 func Test_internalSCIMUserImpl_Deactivate(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -297,12 +300,13 @@ func Test_internalSCIMUserImpl_Deactivate(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodDelete,
 					"scim/directory/direction-id-sample/Users/user-id-uuid-sample",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -345,12 +349,13 @@ func Test_internalSCIMUserImpl_Deactivate(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodDelete,
 					"scim/directory/direction-id-sample/Users/user-id-uuid-sample",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -369,9 +374,9 @@ func Test_internalSCIMUserImpl_Deactivate(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMUserService(testCase.fields.c)
+			newSCIMUserService := NewSCIMUserService(testCase.fields.c)
 
-			gotResponse, err := service.Deactivate(testCase.args.ctx, testCase.args.directoryID, testCase.args.userID)
+			gotResponse, err := newSCIMUserService.Deactivate(testCase.args.ctx, testCase.args.directoryID, testCase.args.userID)
 
 			if testCase.wantErr {
 
@@ -398,7 +403,7 @@ func Test_internalSCIMUserImpl_Path(t *testing.T) {
 	}
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -428,17 +433,14 @@ func Test_internalSCIMUserImpl_Path(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPatch,
 					"scim/directory/direction-id-sample/Users/user-id-uuid-sample?attributes=groups&excludedAttributes=roles",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, nil)
 
 				client.On("Call",
@@ -483,17 +485,14 @@ func Test_internalSCIMUserImpl_Path(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPatch,
 					"scim/directory/direction-id-sample/Users/user-id-uuid-sample?attributes=groups&excludedAttributes=roles",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
 				fields.c = client
@@ -511,9 +510,9 @@ func Test_internalSCIMUserImpl_Path(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMUserService(testCase.fields.c)
+			newSCIMUserService := NewSCIMUserService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Path(testCase.args.ctx, testCase.args.directoryID, testCase.args.userID,
+			gotResult, gotResponse, err := newSCIMUserService.Path(testCase.args.ctx, testCase.args.directoryID, testCase.args.userID,
 				testCase.args.payload, testCase.args.attributes, testCase.args.excludedAttributes)
 
 			if testCase.wantErr {
@@ -554,7 +553,7 @@ func Test_internalSCIMUserImpl_Update(t *testing.T) {
 	}
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -584,17 +583,14 @@ func Test_internalSCIMUserImpl_Update(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPut,
 					"scim/directory/direction-id-sample/Users/user-id-uuid-sample?attributes=groups&excludedAttributes=roles",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, nil)
 
 				client.On("Call",
@@ -639,17 +635,14 @@ func Test_internalSCIMUserImpl_Update(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPut,
 					"scim/directory/direction-id-sample/Users/user-id-uuid-sample?attributes=groups&excludedAttributes=roles",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
 				fields.c = client
@@ -667,9 +660,9 @@ func Test_internalSCIMUserImpl_Update(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMUserService(testCase.fields.c)
+			newSCIMUserService := NewSCIMUserService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Update(testCase.args.ctx, testCase.args.directoryID, testCase.args.userID,
+			gotResult, gotResponse, err := newSCIMUserService.Update(testCase.args.ctx, testCase.args.directoryID, testCase.args.userID,
 				testCase.args.payload, testCase.args.attributes, testCase.args.excludedAttributes)
 
 			if testCase.wantErr {
@@ -710,7 +703,7 @@ func Test_internalSCIMUserImpl_Create(t *testing.T) {
 	}
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -739,17 +732,14 @@ func Test_internalSCIMUserImpl_Create(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPost,
 					"scim/directory/direction-id-sample/Users?attributes=groups&excludedAttributes=roles",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, nil)
 
 				client.On("Call",
@@ -783,17 +773,14 @@ func Test_internalSCIMUserImpl_Create(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPost,
 					"scim/directory/direction-id-sample/Users?attributes=groups&excludedAttributes=roles",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
 				fields.c = client
@@ -811,9 +798,9 @@ func Test_internalSCIMUserImpl_Create(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewSCIMUserService(testCase.fields.c)
+			newSCIMUserService := NewSCIMUserService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Create(testCase.args.ctx, testCase.args.directoryID,
+			gotResult, gotResponse, err := newSCIMUserService.Create(testCase.args.ctx, testCase.args.directoryID,
 				testCase.args.payload, testCase.args.attributes, testCase.args.excludedAttributes)
 
 			if testCase.wantErr {
diff --git a/admin/internal/user_impl_test.go b/admin/internal/user_impl_test.go
index 1043025..42e7c8c 100644
--- a/admin/internal/user_impl_test.go
+++ b/admin/internal/user_impl_test.go
@@ -1,7 +1,6 @@
 package internal
 
 import (
-	"bytes"
 	"context"
 	"errors"
 	model "github.com/ctreminiom/go-atlassian/pkg/infra/models"
@@ -15,7 +14,7 @@ import (
 func Test_internalUserImpl_Permissions(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -41,12 +40,13 @@ func Test_internalUserImpl_Permissions(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"users/account-id-sample/manage?privileges=privileges-sample",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -79,12 +79,13 @@ func Test_internalUserImpl_Permissions(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"users/account-id-sample/manage?privileges=privileges-sample",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -103,9 +104,9 @@ func Test_internalUserImpl_Permissions(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewUserService(testCase.fields.c, nil)
+			newUserService := NewUserService(testCase.fields.c, nil)
 
-			gotResult, gotResponse, err := service.Permissions(testCase.args.ctx, testCase.args.accountID, testCase.args.privileges)
+			gotResult, gotResponse, err := newUserService.Permissions(testCase.args.ctx, testCase.args.accountID, testCase.args.privileges)
 
 			if testCase.wantErr {
 
@@ -129,7 +130,7 @@ func Test_internalUserImpl_Permissions(t *testing.T) {
 func Test_internalUserImpl_Get(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -153,12 +154,13 @@ func Test_internalUserImpl_Get(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"users/account-id-sample/manage/profile",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -190,12 +192,13 @@ func Test_internalUserImpl_Get(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"users/account-id-sample/manage/profile",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -214,9 +217,9 @@ func Test_internalUserImpl_Get(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewUserService(testCase.fields.c, nil)
+			newUserService := NewUserService(testCase.fields.c, nil)
 
-			gotResult, gotResponse, err := service.Get(testCase.args.ctx, testCase.args.accountID)
+			gotResult, gotResponse, err := newUserService.Get(testCase.args.ctx, testCase.args.accountID)
 
 			if testCase.wantErr {
 
@@ -240,7 +243,7 @@ func Test_internalUserImpl_Get(t *testing.T) {
 func Test_internalUserImpl_Enable(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -264,12 +267,13 @@ func Test_internalUserImpl_Enable(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPost,
 					"users/account-id-sample/manage/lifecycle/enable",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -301,12 +305,13 @@ func Test_internalUserImpl_Enable(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPost,
 					"users/account-id-sample/manage/lifecycle/enable",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -325,9 +330,9 @@ func Test_internalUserImpl_Enable(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewUserService(testCase.fields.c, nil)
+			newUserService := NewUserService(testCase.fields.c, nil)
 
-			gotResponse, err := service.Enable(testCase.args.ctx, testCase.args.accountID)
+			gotResponse, err := newUserService.Enable(testCase.args.ctx, testCase.args.accountID)
 
 			if testCase.wantErr {
 
@@ -349,12 +354,10 @@ func Test_internalUserImpl_Enable(t *testing.T) {
 
 func Test_internalUserImpl_Disable(t *testing.T) {
 
-	payloadMocked := &struct {
-		Message string "json:\"message\""
-	}{Message: "Your account has been disabled :("}
+	payloadMocked := map[string]interface{}{"message": "Your account has been disabled :("}
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -379,17 +382,14 @@ func Test_internalUserImpl_Disable(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPost,
 					"users/account-id-sample/manage/lifecycle/disable",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, nil)
 
 				client.On("Call",
@@ -421,17 +421,14 @@ func Test_internalUserImpl_Disable(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPost,
 					"users/account-id-sample/manage/lifecycle/disable",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
 				fields.c = client
@@ -449,9 +446,9 @@ func Test_internalUserImpl_Disable(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewUserService(testCase.fields.c, nil)
+			newUserService := NewUserService(testCase.fields.c, nil)
 
-			gotResponse, err := service.Disable(testCase.args.ctx, testCase.args.accountID, testCase.args.message)
+			gotResponse, err := newUserService.Disable(testCase.args.ctx, testCase.args.accountID, testCase.args.message)
 
 			if testCase.wantErr {
 
@@ -475,11 +472,8 @@ func Test_internalUserImpl_Update(t *testing.T) {
 
 	payloadMocked := map[string]interface{}{"nickname": "marshmallow"}
 
-	var payload = make(map[string]interface{})
-	payload["nickname"] = "marshmallow"
-
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -501,21 +495,18 @@ func Test_internalUserImpl_Update(t *testing.T) {
 			args: args{
 				ctx:       context.TODO(),
 				accountID: "account-id-sample",
-				payload:   payload,
+				payload:   payloadMocked,
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPatch,
 					"users/account-id-sample/manage/profile",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, nil)
 
 				client.On("Call",
@@ -543,21 +534,18 @@ func Test_internalUserImpl_Update(t *testing.T) {
 			args: args{
 				ctx:       context.TODO(),
 				accountID: "account-id-sample",
-				payload:   payload,
+				payload:   payloadMocked,
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
-
-				client.On("TransformStructToReader",
-					payloadMocked).
-					Return(bytes.NewReader([]byte{}), nil)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodPatch,
 					"users/account-id-sample/manage/profile",
-					bytes.NewReader([]byte{})).
+					"",
+					payloadMocked).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
 				fields.c = client
@@ -575,9 +563,9 @@ func Test_internalUserImpl_Update(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewUserService(testCase.fields.c, nil)
+			newUserService := NewUserService(testCase.fields.c, nil)
 
-			gotResult, gotResponse, err := service.Update(testCase.args.ctx, testCase.args.accountID, testCase.args.payload)
+			gotResult, gotResponse, err := newUserService.Update(testCase.args.ctx, testCase.args.accountID, testCase.args.payload)
 
 			if testCase.wantErr {
 
diff --git a/admin/internal/user_token_impl_test.go b/admin/internal/user_token_impl_test.go
index 905e08c..81b97d0 100644
--- a/admin/internal/user_token_impl_test.go
+++ b/admin/internal/user_token_impl_test.go
@@ -15,7 +15,7 @@ import (
 func Test_internalUserTokenImpl_Gets(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -39,12 +39,13 @@ func Test_internalUserTokenImpl_Gets(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"users/account-id-sample/manage/api-tokens",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -75,12 +76,13 @@ func Test_internalUserTokenImpl_Gets(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodGet,
 					"users/account-id-sample/manage/api-tokens",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -99,9 +101,9 @@ func Test_internalUserTokenImpl_Gets(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewUserTokenService(testCase.fields.c)
+			newUserTokenService := NewUserTokenService(testCase.fields.c)
 
-			gotResult, gotResponse, err := service.Gets(testCase.args.ctx, testCase.args.accountID)
+			gotResult, gotResponse, err := newUserTokenService.Gets(testCase.args.ctx, testCase.args.accountID)
 
 			if testCase.wantErr {
 
@@ -125,7 +127,7 @@ func Test_internalUserTokenImpl_Gets(t *testing.T) {
 func Test_internalUserTokenImpl_Delete(t *testing.T) {
 
 	type fields struct {
-		c service.Client
+		c service.Connector
 	}
 
 	type args struct {
@@ -150,12 +152,13 @@ func Test_internalUserTokenImpl_Delete(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodDelete,
 					"users/account-id-sample/manage/api-tokens/token-id-sample",
+					"",
 					nil).
 					Return(&http.Request{}, nil)
 
@@ -197,12 +200,13 @@ func Test_internalUserTokenImpl_Delete(t *testing.T) {
 			},
 			on: func(fields *fields) {
 
-				client := mocks.NewClient(t)
+				client := mocks.NewConnector(t)
 
 				client.On("NewRequest",
 					context.Background(),
 					http.MethodDelete,
 					"users/account-id-sample/manage/api-tokens/token-id-sample",
+					"",
 					nil).
 					Return(&http.Request{}, errors.New("error, unable to create the http request"))
 
@@ -221,9 +225,9 @@ func Test_internalUserTokenImpl_Delete(t *testing.T) {
 				testCase.on(&testCase.fields)
 			}
 
-			service := NewUserTokenService(testCase.fields.c)
+			newUserTokenService := NewUserTokenService(testCase.fields.c)
 
-			gotResponse, err := service.Delete(testCase.args.ctx, testCase.args.accountID, testCase.args.tokenID)
+			gotResponse, err := newUserTokenService.Delete(testCase.args.ctx, testCase.args.accountID, testCase.args.tokenID)
 
 			if testCase.wantErr {