killbill-memoizeit

jaxrs, profiles: Renable all profile tests -- provided we use

3/28/2018 7:17:12 PM

Changes

Details

diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
index 3d53ec0..44dc398 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
@@ -467,8 +467,8 @@ public class AccountResource extends JaxRsResourceBase {
     @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
                            @ApiResponse(code = 404, message = "Account not found")})
     public Response getAccountTimeline(@PathParam("accountId") final UUID accountId,
-                                       @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
                                        @QueryParam(QUERY_PARALLEL) @DefaultValue("false") final Boolean parallel,
+                                       @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
                                        @javax.ws.rs.core.Context final HttpServletRequest request) throws AccountApiException, PaymentApiException, SubscriptionApiException, InvoiceApiException, CatalogApiException {
 
         final TenantContext tenantContext = context.createTenantContextWithAccountId(accountId, request);
@@ -724,10 +724,10 @@ public class AccountResource extends JaxRsResourceBase {
     @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
                            @ApiResponse(code = 404, message = "Account not found")})
     public Response getInvoicePayments(@PathParam("accountId") final UUID accountId,
-                                       @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
                                        @QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
                                        @QueryParam(QUERY_WITH_ATTEMPTS) @DefaultValue("false") final Boolean withAttempts,
                                        @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
+                                       @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
                                        @javax.ws.rs.core.Context final HttpServletRequest request) throws PaymentApiException, AccountApiException {
         final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
         final TenantContext tenantContext = context.createTenantContextWithAccountId(accountId, request);
@@ -850,8 +850,8 @@ public class AccountResource extends JaxRsResourceBase {
                            @ApiResponse(code = 404, message = "Account not found")})
     public Response getPaymentMethods(@PathParam("accountId") final UUID accountId,
                                       @QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
-                                      @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
                                       @QueryParam(QUERY_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
+                                      @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
                                       @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
                                       @javax.ws.rs.core.Context final HttpServletRequest request) throws AccountApiException, PaymentApiException {
         final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
@@ -939,10 +939,10 @@ public class AccountResource extends JaxRsResourceBase {
     @ApiOperation(value = "Retrieve account payments", response = PaymentJson.class, responseContainer = "List")
     @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied")})
     public Response getPayments(@PathParam("accountId") final UUID accountId,
-                                @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
-                                @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
-                                @QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
                                 @QueryParam(QUERY_WITH_ATTEMPTS) @DefaultValue("false") final Boolean withAttempts,
+                                @QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
+                                @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
+                                @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
                                 @javax.ws.rs.core.Context final HttpServletRequest request) throws PaymentApiException {
         final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
         final TenantContext tenantContext = context.createTenantContextWithAccountId(accountId, request);
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java
index 8705e13..a0cd0cb 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java
@@ -385,8 +385,8 @@ public class InvoicePaymentResource extends JaxRsResourceBase {
     @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid payment id supplied"),
                            @ApiResponse(code = 404, message = "Payment not found")})
     public Response getTags(@PathParam(ID_PARAM_NAME) final UUID paymentId,
-                            @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
                             @QueryParam(QUERY_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
+                            @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
                             @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
                             @javax.ws.rs.core.Context final HttpServletRequest request) throws TagDefinitionApiException, PaymentApiException {
         final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
index becf8ad..c4a052d 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
@@ -600,9 +600,9 @@ public class InvoiceResource extends JaxRsResourceBase {
     @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid invoice id supplied"),
                            @ApiResponse(code = 404, message = "Invoice not found")})
     public Response getPayments(@PathParam("invoiceId") final UUID invoiceId,
-                                @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
                                 @QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
                                 @QueryParam(QUERY_WITH_ATTEMPTS) @DefaultValue("false") final Boolean withAttempts,
+                                @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
                                 @javax.ws.rs.core.Context final HttpServletRequest request) throws PaymentApiException, InvoiceApiException {
 
         final TenantContext tenantContext = context.createTenantContextNoAccountId(request);
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentMethodResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentMethodResource.java
index 8f6f98c..d21428a 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentMethodResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentMethodResource.java
@@ -103,10 +103,10 @@ public class PaymentMethodResource extends JaxRsResourceBase {
     @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid paymentMethodId supplied"),
                            @ApiResponse(code = 404, message = "Account or payment method not found")})
     public Response getPaymentMethod(@PathParam("paymentMethodId") final UUID paymentMethodId,
-                                     @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
                                      @QueryParam(QUERY_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
-                                     @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
                                      @QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
+                                     @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
+                                     @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
                                      @javax.ws.rs.core.Context final HttpServletRequest request) throws AccountApiException, PaymentApiException {
         final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
         final TenantContext tenantContext = context.createTenantContextNoAccountId(request);
@@ -125,10 +125,10 @@ public class PaymentMethodResource extends JaxRsResourceBase {
     @ApiOperation(value = "Retrieve a payment method by external key", response = PaymentMethodJson.class)
     @ApiResponses(value = {@ApiResponse(code = 404, message = "Account or payment method not found")})
     public Response getPaymentMethodByKey(@ApiParam(required=true) @QueryParam(QUERY_EXTERNAL_KEY) final String externalKey,
-                                          @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
                                           @QueryParam(QUERY_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
-                                          @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
                                           @QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
+                                          @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
+                                          @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
                                           @javax.ws.rs.core.Context final HttpServletRequest request) throws AccountApiException, PaymentApiException {
         final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
         final TenantContext tenantContext = context.createTenantContextNoAccountId(request);
@@ -149,9 +149,9 @@ public class PaymentMethodResource extends JaxRsResourceBase {
     public Response getPaymentMethods(@QueryParam(QUERY_SEARCH_OFFSET) @DefaultValue("0") final Long offset,
                                       @QueryParam(QUERY_SEARCH_LIMIT) @DefaultValue("100") final Long limit,
                                       @QueryParam(QUERY_PAYMENT_METHOD_PLUGIN_NAME) final String pluginName,
+                                      @QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
                                       @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
                                       @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
-                                      @QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
                                       @javax.ws.rs.core.Context final HttpServletRequest request) throws PaymentApiException {
         final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
         final TenantContext tenantContext = context.createTenantContextNoAccountId(request);
@@ -206,9 +206,9 @@ public class PaymentMethodResource extends JaxRsResourceBase {
                                          @QueryParam(QUERY_SEARCH_OFFSET) @DefaultValue("0") final Long offset,
                                          @QueryParam(QUERY_SEARCH_LIMIT) @DefaultValue("100") final Long limit,
                                          @QueryParam(QUERY_PAYMENT_METHOD_PLUGIN_NAME) final String pluginName,
+                                         @QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
                                          @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
                                          @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
-                                         @QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
                                          @javax.ws.rs.core.Context final HttpServletRequest request) throws PaymentApiException, AccountApiException {
         final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
         final TenantContext tenantContext = context.createTenantContextNoAccountId(request);
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentResource.java
index 10fc50b..39fa4d5 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentResource.java
@@ -156,9 +156,9 @@ public class PaymentResource extends ComboPaymentResource {
     public Response getPayments(@QueryParam(QUERY_SEARCH_OFFSET) @DefaultValue("0") final Long offset,
                                 @QueryParam(QUERY_SEARCH_LIMIT) @DefaultValue("100") final Long limit,
                                 @QueryParam(QUERY_PAYMENT_PLUGIN_NAME) final String pluginName,
-                                @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
                                 @QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
                                 @QueryParam(QUERY_WITH_ATTEMPTS) @DefaultValue("false") final Boolean withAttempts,
+                                @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
                                 @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
                                 @javax.ws.rs.core.Context final HttpServletRequest request) throws PaymentApiException {
         final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
@@ -200,11 +200,11 @@ public class PaymentResource extends ComboPaymentResource {
     public Response searchPayments(@PathParam("searchKey") final String searchKey,
                                    @QueryParam(QUERY_SEARCH_OFFSET) @DefaultValue("0") final Long offset,
                                    @QueryParam(QUERY_SEARCH_LIMIT) @DefaultValue("100") final Long limit,
+                                   @QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
+                                   @QueryParam(QUERY_WITH_ATTEMPTS) @DefaultValue("false") final Boolean withAttempts,
                                    @QueryParam(QUERY_PAYMENT_PLUGIN_NAME) final String pluginName,
                                    @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
                                    @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
-                                   @QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
-                                   @QueryParam(QUERY_WITH_ATTEMPTS) @DefaultValue("false") final Boolean withAttempts,
                                    @javax.ws.rs.core.Context final HttpServletRequest request) throws PaymentApiException {
         final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
         final TenantContext tenantContext = context.createTenantContextNoAccountId(request);
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAccount.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAccount.java
index 47465b6..736775c 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAccount.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAccount.java
@@ -236,7 +236,7 @@ public class TestAccount extends TestJaxrsBase {
         info.setProperties(getPaymentMethodCCProperties());
         PaymentMethod paymentMethodJson = new PaymentMethod(null, UUID.randomUUID().toString(), accountJson.getAccountId(), true, PLUGIN_NAME, info, EMPTY_AUDIT_LOGS);
         final PaymentMethod paymentMethodCC = accountApi.createPaymentMethod(paymentMethodJson, accountJson.getAccountId(), true, false, NULL_PLUGIN_NAMES, NULL_PLUGIN_PROPERTIES, requestOptions);
-        assertTrue(paymentMethodCC.isIsDefault());
+        assertTrue(paymentMethodCC.isDefault());
 
         //
         // Add another payment method
@@ -245,7 +245,7 @@ public class TestAccount extends TestJaxrsBase {
         info2.setProperties(getPaymentMethodPaypalProperties());
         paymentMethodJson = new PaymentMethod(null, UUID.randomUUID().toString(), accountJson.getAccountId(), false, PLUGIN_NAME, info2, EMPTY_AUDIT_LOGS);
         final PaymentMethod paymentMethodPP = accountApi.createPaymentMethod(paymentMethodJson, accountJson.getAccountId(), NULL_PLUGIN_NAMES, NULL_PLUGIN_PROPERTIES, requestOptions);
-        assertFalse(paymentMethodPP.isIsDefault());
+        assertFalse(paymentMethodPP.isDefault());
 
         //
         // FETCH ALL PAYMENT METHODS
@@ -256,11 +256,11 @@ public class TestAccount extends TestJaxrsBase {
         //
         // CHANGE DEFAULT
         //
-        assertTrue(paymentMethodApi.getPaymentMethod(paymentMethodCC.getPaymentMethodId(), NULL_PLUGIN_PROPERTIES, requestOptions).isIsDefault());
-        assertFalse(paymentMethodApi.getPaymentMethod(paymentMethodPP.getPaymentMethodId(), NULL_PLUGIN_PROPERTIES, requestOptions).isIsDefault());
+        assertTrue(paymentMethodApi.getPaymentMethod(paymentMethodCC.getPaymentMethodId(), NULL_PLUGIN_PROPERTIES, requestOptions).isDefault());
+        assertFalse(paymentMethodApi.getPaymentMethod(paymentMethodPP.getPaymentMethodId(), NULL_PLUGIN_PROPERTIES, requestOptions).isDefault());
         accountApi.setDefaultPaymentMethod(accountJson.getAccountId(), paymentMethodPP.getPaymentMethodId(), NULL_PLUGIN_PROPERTIES, requestOptions);
-        assertTrue(paymentMethodApi.getPaymentMethod(paymentMethodPP.getPaymentMethodId(), NULL_PLUGIN_PROPERTIES, requestOptions).isIsDefault());
-        assertFalse(paymentMethodApi.getPaymentMethod(paymentMethodCC.getPaymentMethodId(), NULL_PLUGIN_PROPERTIES, requestOptions).isIsDefault());
+        assertTrue(paymentMethodApi.getPaymentMethod(paymentMethodPP.getPaymentMethodId(), NULL_PLUGIN_PROPERTIES, requestOptions).isDefault());
+        assertFalse(paymentMethodApi.getPaymentMethod(paymentMethodCC.getPaymentMethodId(), NULL_PLUGIN_PROPERTIES, requestOptions).isDefault());
 
         //
         // DELETE NON DEFAULT PM
@@ -471,7 +471,7 @@ public class TestAccount extends TestJaxrsBase {
         final Account retrievedAccount = accountApi.getAccountByKey(childAccount.getExternalKey(), requestOptions);
         Assert.assertTrue(retrievedAccount.equals(childAccount));
         Assert.assertEquals(retrievedAccount.getParentAccountId(), parentAccount.getAccountId());
-        Assert.assertTrue(retrievedAccount.isIsPaymentDelegatedToParent());
+        Assert.assertTrue(retrievedAccount.isPaymentDelegatedToParent());
     }
 
     @Test(groups = "slow", description = "retrieve children accounts by parent account id")
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAccountEmailNotifications.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAccountEmailNotifications.java
index 0d44ee3..dd4ddef 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAccountEmailNotifications.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAccountEmailNotifications.java
@@ -38,7 +38,7 @@ public class TestAccountEmailNotifications extends TestJaxrsBase {
         // Verify the initial state
         final InvoiceEmail firstInvoiceEmailJson = accountApi.getEmailNotificationsForAccount(accountId, requestOptions);
         Assert.assertEquals(firstInvoiceEmailJson.getAccountId(), accountId);
-        Assert.assertFalse(firstInvoiceEmailJson.isIsNotifiedForInvoices());
+        Assert.assertFalse(firstInvoiceEmailJson.isNotifiedForInvoices());
 
         // Enable email notifications
         accountApi.setEmailNotificationsForAccount(invoiceEmailJsonWithNotifications, accountId, requestOptions);
@@ -46,7 +46,7 @@ public class TestAccountEmailNotifications extends TestJaxrsBase {
         // Verify we can retrieve it
         final InvoiceEmail secondInvoiceEmailJson = accountApi.getEmailNotificationsForAccount(accountId, requestOptions);
         Assert.assertEquals(secondInvoiceEmailJson.getAccountId(), accountId);
-        Assert.assertTrue(secondInvoiceEmailJson.isIsNotifiedForInvoices());
+        Assert.assertTrue(secondInvoiceEmailJson.isNotifiedForInvoices());
 
         // Disable email notifications
         accountApi.setEmailNotificationsForAccount(invoiceEmailJsonWithoutNotifications, accountId, requestOptions);
@@ -54,6 +54,6 @@ public class TestAccountEmailNotifications extends TestJaxrsBase {
         // Verify we can retrieve it
         final InvoiceEmail thirdInvoiceEmailJson = accountApi.getEmailNotificationsForAccount(accountId, requestOptions );
         Assert.assertEquals(thirdInvoiceEmailJson.getAccountId(), accountId);
-        Assert.assertFalse(thirdInvoiceEmailJson.isIsNotifiedForInvoices());
+        Assert.assertFalse(thirdInvoiceEmailJson.isNotifiedForInvoices());
     }
 }
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAccountTimeline.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAccountTimeline.java
index 5856c8a..717e392 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAccountTimeline.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAccountTimeline.java
@@ -304,10 +304,10 @@ public class TestAccountTimeline extends TestJaxrsBase {
     }
 
     private AccountTimeline getAccountTimeline(final UUID accountId, final AuditLevel auditLevel) throws KillBillClientException {
-        final AccountTimeline accountTimeline = accountApi.getAccountTimeline(accountId, auditLevel, false, requestOptions);
+        final AccountTimeline accountTimeline = accountApi.getAccountTimeline(accountId, false, auditLevel, requestOptions);
 
         // Verify also the parallel path
-        final AccountTimeline accountTimelineInParallel = accountApi.getAccountTimeline(accountId, auditLevel, true, requestOptions);
+        final AccountTimeline accountTimelineInParallel = accountApi.getAccountTimeline(accountId, true, auditLevel, requestOptions);
         Assert.assertEquals(accountTimelineInParallel, accountTimeline);
 
         return accountTimeline;
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestCache.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestCache.java
index 342ad53..01444c0 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestCache.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestCache.java
@@ -106,7 +106,7 @@ public class TestCache extends TestJaxrsBase {
     }
 
     // Flaky, see https://github.com/killbill/killbill/issues/860
-    @Test(groups = "slow") //, description = "Can Invalidate (clear) all Tenant Caches for current Tenant", retryAnalyzer = FlakyRetryAnalyzer.class)
+    @Test(groups = "slow", description = "Can Invalidate (clear) all Tenant Caches for current Tenant", retryAnalyzer = FlakyRetryAnalyzer.class)
     public void testInvalidateCacheByTenant() throws Exception {
         // creating a new Tenant for this test
         final String testApiKey = "testApiKey";
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoice.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoice.java
index 8add60f..715198e 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoice.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoice.java
@@ -26,6 +26,7 @@ import java.util.UUID;
 import org.joda.time.DateTime;
 import org.joda.time.DateTimeZone;
 import org.joda.time.LocalDate;
+import org.killbill.billing.api.FlakyRetryAnalyzer;
 import org.killbill.billing.catalog.api.BillingPeriod;
 import org.killbill.billing.catalog.api.ProductCategory;
 import org.killbill.billing.client.JaxrsResource;
@@ -513,8 +514,7 @@ public class TestInvoice extends TestJaxrsBase {
     }
 
     // Flaky, see https://github.com/killbill/killbill/issues/801
-    @Test(groups = "slow", description = "Can create multiple external charges with same invoice and external keys")
-    // , retryAnalyzer = FlakyRetryAnalyzer.class
+    @Test(groups = "slow", description = "Can create multiple external charges with same invoice and external keys", retryAnalyzer = FlakyRetryAnalyzer.class)
     public void testExternalChargesWithSameInvoiceAndExternalKeys() throws Exception {
         final Account accountJson = createAccountWithPMBundleAndSubscriptionAndWaitForFirstInvoice();
 
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoicePayment.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoicePayment.java
index d0a95fd..d14fafc 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoicePayment.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoicePayment.java
@@ -262,7 +262,7 @@ public class TestInvoicePayment extends TestJaxrsBase {
         final List<PaymentTransaction> objRefundFromJson = getInvoicePaymentTransactions(allPayments, TransactionType.REFUND);
         Assert.assertEquals(objRefundFromJson.size(), 5);
 
-        Payments paymentsPage = paymentApi.getPayments(0L, 1L, null, NULL_PLUGIN_PROPERTIES, false, false, AuditLevel.NONE, requestOptions);
+        Payments paymentsPage = paymentApi.getPayments(0L, 1L, null, false, false, NULL_PLUGIN_PROPERTIES, AuditLevel.NONE, requestOptions);
         for (int i = 0; i < 6; i++) {
             Assert.assertNotNull(paymentsPage);
             Assert.assertEquals(paymentsPage.size(), 1);
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoiceVoid.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoiceVoid.java
index 53c9373..1e85c11 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoiceVoid.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestInvoiceVoid.java
@@ -148,7 +148,7 @@ public class TestInvoiceVoid extends TestJaxrsBase {
     }
 
     // Flaky, see https://github.com/killbill/killbill/issues/860
-    @Test(groups = "slow", description = "Void a child invoice") // , retryAnalyzer = FlakyRetryAnalyzer.class)
+    @Test(groups = "slow", description = "Void a child invoice", retryAnalyzer = FlakyRetryAnalyzer.class)
     public void testChildVoidInvoice() throws Exception {
         final DateTime initialDate = new DateTime(2012, 4, 25, 0, 3, 42, 0);
         final LocalDate triggeredDate = new LocalDate(2012, 5, 26);
@@ -189,7 +189,7 @@ public class TestInvoiceVoid extends TestJaxrsBase {
     }
 
     // Flaky, see https://github.com/killbill/killbill/issues/860
-    @Test(groups = "slow", description = "Void a parent invoice") //, retryAnalyzer = FlakyRetryAnalyzer.class)
+    @Test(groups = "slow", description = "Void a parent invoice", retryAnalyzer = FlakyRetryAnalyzer.class)
     public void testParentVoidInvoice() throws Exception {
         final DateTime initialDate = new DateTime(2012, 4, 25, 0, 3, 42, 0);
         final LocalDate triggeredDate = new LocalDate(2012, 5, 26);
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestOverdue.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestOverdue.java
index 5f90e66..18b67df 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestOverdue.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestOverdue.java
@@ -57,7 +57,7 @@ public class TestOverdue extends TestJaxrsBase {
         assertEquals(invoices.size(), 2);
 
         // We're still clear - see the configuration
-        Assert.assertTrue(accountApi.getOverdueAccount(accountJson.getAccountId(), requestOptions).isIsClearState());
+        Assert.assertTrue(accountApi.getOverdueAccount(accountJson.getAccountId(), requestOptions).isClearState());
 
         clock.addDays(30);
         crappyWaitForLackOfProperSynchonization();
@@ -96,7 +96,7 @@ public class TestOverdue extends TestJaxrsBase {
         crappyWaitForLackOfProperSynchonization();
 
         // Verify we're in clear state
-        Assert.assertTrue(accountApi.getOverdueAccount(accountJson.getAccountId(), requestOptions).isIsClearState());
+        Assert.assertTrue(accountApi.getOverdueAccount(accountJson.getAccountId(), requestOptions).isClearState());
     }
 
     @Test(groups = "slow", description = "Allow overdue condition by control tag defined in overdue config xml file")
@@ -125,8 +125,8 @@ public class TestOverdue extends TestJaxrsBase {
         assertEquals(invoicesNoTag.size(), 2);
 
         // We're still clear - see the configuration
-        Assert.assertTrue(accountApi.getOverdueAccount(accountJson.getAccountId(), requestOptions).isIsClearState());
-        Assert.assertTrue(accountApi.getOverdueAccount(accountJsonNoTag.getAccountId(), requestOptions).isIsClearState());
+        Assert.assertTrue(accountApi.getOverdueAccount(accountJson.getAccountId(), requestOptions).isClearState());
+        Assert.assertTrue(accountApi.getOverdueAccount(accountJsonNoTag.getAccountId(), requestOptions).isClearState());
 
         clock.addDays(30);
         crappyWaitForLackOfProperSynchonization();
@@ -134,7 +134,7 @@ public class TestOverdue extends TestJaxrsBase {
         // This account is expected to move to OD1 state because it matches with controlTag defined
         Assert.assertEquals(accountApi.getOverdueAccount(accountJson.getAccountId(), requestOptions).getName(), "OD1");
         // This account is not expected to move to OD1 state because it does not match with controlTag defined
-        Assert.assertTrue(accountApi.getOverdueAccount(accountJsonNoTag.getAccountId(), requestOptions).isIsClearState());
+        Assert.assertTrue(accountApi.getOverdueAccount(accountJsonNoTag.getAccountId(), requestOptions).isClearState());
     }
 
     @Test(groups = "slow", description = "Allow overdue condition by exclusion control tag defined in overdue config xml file")
@@ -165,14 +165,14 @@ public class TestOverdue extends TestJaxrsBase {
         assertEquals(invoicesNoTag.size(), 2);
 
         // We're still clear - see the configuration
-        Assert.assertTrue(accountApi.getOverdueAccount(accountJson.getAccountId(), requestOptions).isIsClearState());
-        Assert.assertTrue(accountApi.getOverdueAccount(accountJsonNoTag.getAccountId(), requestOptions).isIsClearState());
+        Assert.assertTrue(accountApi.getOverdueAccount(accountJson.getAccountId(), requestOptions).isClearState());
+        Assert.assertTrue(accountApi.getOverdueAccount(accountJsonNoTag.getAccountId(), requestOptions).isClearState());
 
         clock.addDays(30);
         crappyWaitForLackOfProperSynchonization();
 
         // This account is not expected to move to OD1 state because it does not match with exclusion controlTag defined
-        Assert.assertTrue(accountApi.getOverdueAccount(accountJson.getAccountId(), requestOptions).isIsClearState());
+        Assert.assertTrue(accountApi.getOverdueAccount(accountJson.getAccountId(), requestOptions).isClearState());
         // This account is expected to move to OD1 state because it matches with exclusion controlTag defined
         Assert.assertEquals(accountApi.getOverdueAccount(accountJsonNoTag.getAccountId(), requestOptions).getName(), "OD1");
     }
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java
index 196432a..51f6b6a 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java
@@ -267,7 +267,7 @@ public class TestPayment extends TestJaxrsBase {
                                                     .withComment(comment)
                                                     .withQueryParams(queryParams).build();
 
-        Payments payments = paymentApi.getPayments(0L, 100L, null, NULL_PLUGIN_PROPERTIES, false, true, AuditLevel.NONE, inputOptions);
+        Payments payments = paymentApi.getPayments(0L, 100L, null, false, true, NULL_PLUGIN_PROPERTIES, AuditLevel.NONE, inputOptions);
 
         Assert.assertNotNull(payments.get(0).getPaymentAttempts());
         Assert.assertEquals(payments.get(0).getPaymentAttempts().get(0).getStateName(), "RETRIED");
@@ -287,7 +287,7 @@ public class TestPayment extends TestJaxrsBase {
                                                     .withComment(comment)
                                                     .withQueryParams(queryParams).build();
 
-        Payments payments = paymentApi.searchPayments("", 0L, 100L, null, NULL_PLUGIN_PROPERTIES, AuditLevel.NONE, false, true, inputOptions);
+        Payments payments = paymentApi.searchPayments("", 0L, 100L, false, true, null, NULL_PLUGIN_PROPERTIES, AuditLevel.NONE, inputOptions);
 
         Assert.assertNotNull(payments.get(0).getPaymentAttempts());
         Assert.assertEquals(payments.get(0).getPaymentAttempts().get(0).getStateName(), "RETRIED");
@@ -299,7 +299,7 @@ public class TestPayment extends TestJaxrsBase {
         mockPaymentProviderPlugin.makeNextPaymentFailWithError();
         createAccountWithPMBundleAndSubscriptionAndWaitForFirstInvoice();
 
-        Payments payments = paymentApi.searchPayments("", 0L, 100L, null, NULL_PLUGIN_PROPERTIES, AuditLevel.NONE, false, true, requestOptions);
+        Payments payments = paymentApi.searchPayments("", 0L, 100L, false, true, null, NULL_PLUGIN_PROPERTIES, AuditLevel.NONE, requestOptions);
         Assert.assertNotNull(payments.get(0));
         Payment payment = paymentApi.getPayment(payments.get(0).getPaymentId(), false, true, NULL_PLUGIN_PROPERTIES, AuditLevel.NONE, requestOptions);
 
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentMethod.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentMethod.java
index e44da34..f406bcd 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentMethod.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentMethod.java
@@ -24,12 +24,12 @@ import java.util.List;
 import java.util.UUID;
 
 import org.killbill.billing.ObjectType;
-import org.killbill.billing.client.model.Account;
-import org.killbill.billing.client.model.CustomField;
 import org.killbill.billing.client.model.CustomFields;
-import org.killbill.billing.client.model.PaymentMethod;
 import org.killbill.billing.client.model.PaymentMethods;
-import org.killbill.billing.client.model.PluginProperty;
+import org.killbill.billing.client.model.gen.Account;
+import org.killbill.billing.client.model.gen.CustomField;
+import org.killbill.billing.client.model.gen.PaymentMethod;
+import org.killbill.billing.client.model.gen.PluginProperty;
 import org.killbill.billing.util.api.AuditLevel;
 import org.testng.Assert;
 import org.testng.annotations.Test;
@@ -41,20 +41,20 @@ public class TestPaymentMethod extends TestJaxrsBase {
 
         final Account accountJson = createAccountWithDefaultPaymentMethod("foo");
 
-        final PaymentMethod paymentMethodJson1 = killBillClient.getPaymentMethodByKey("foo", true);
+        final PaymentMethod paymentMethodJson1 = paymentMethodApi.getPaymentMethodByKey("foo", NULL_PLUGIN_PROPERTIES, requestOptions);
 
-        final PaymentMethod paymentMethodJson2 = killBillClient.getPaymentMethod(accountJson.getPaymentMethodId(), true);
+        final PaymentMethod paymentMethodJson2 = paymentMethodApi.getPaymentMethod(accountJson.getPaymentMethodId(), NULL_PLUGIN_PROPERTIES, requestOptions);
         Assert.assertEquals(paymentMethodJson1, paymentMethodJson2);
 
-        final PaymentMethod paymentMethodJson3 = killBillClient.getPaymentMethodByKey("doesnotexist", true);
+        final PaymentMethod paymentMethodJson3 = paymentMethodApi.getPaymentMethodByKey("doesnotexist", NULL_PLUGIN_PROPERTIES, requestOptions);
         Assert.assertNull(paymentMethodJson3);
     }
 
     @Test(groups = "slow", description = "Can search payment methods")
     public void testSearchPaymentMethods() throws Exception {
         // Search random key
-        Assert.assertEquals(killBillClient.searchPaymentMethodsByKey(UUID.randomUUID().toString()).size(), 0);
-        Assert.assertEquals(killBillClient.searchPaymentMethodsByKeyAndPlugin(UUID.randomUUID().toString(), PLUGIN_NAME).size(), 0);
+        Assert.assertEquals(paymentMethodApi.searchPaymentMethods(UUID.randomUUID().toString(), null, NULL_PLUGIN_PROPERTIES, requestOptions).size(), 0);
+        Assert.assertEquals(paymentMethodApi.searchPaymentMethods(UUID.randomUUID().toString(), PLUGIN_NAME, NULL_PLUGIN_PROPERTIES, requestOptions).size(), 0);
 
         // Create a payment method
         final List<PluginProperty> pmProperties = new ArrayList<PluginProperty>();
@@ -65,11 +65,11 @@ public class TestPaymentMethod extends TestJaxrsBase {
         pmProperties.add(new PluginProperty("CC_COUNTRY", "Zimbawe", false));
 
         final Account accountJson = createAccountWithDefaultPaymentMethod(UUID.randomUUID().toString(), pmProperties);
-        final PaymentMethod paymentMethodJson = killBillClient.getPaymentMethod(accountJson.getPaymentMethodId(), true);
+        final PaymentMethod paymentMethodJson = paymentMethodApi.getPaymentMethod(accountJson.getPaymentMethodId(), false, true, NULL_PLUGIN_PROPERTIES, AuditLevel.NONE, requestOptions);
 
         // Search random key again
-        Assert.assertEquals(killBillClient.searchPaymentMethodsByKey(UUID.randomUUID().toString()).size(), 0);
-        Assert.assertEquals(killBillClient.searchPaymentMethodsByKeyAndPlugin(UUID.randomUUID().toString(), PLUGIN_NAME).size(), 0);
+        Assert.assertEquals(paymentMethodApi.searchPaymentMethods(UUID.randomUUID().toString(), null, NULL_PLUGIN_PROPERTIES, requestOptions).size(), 0);
+        Assert.assertEquals(paymentMethodApi.searchPaymentMethods(UUID.randomUUID().toString(), PLUGIN_NAME, NULL_PLUGIN_PROPERTIES, requestOptions).size(), 0);
 
         // Last 4
         doSearch("4365", paymentMethodJson);
@@ -89,10 +89,10 @@ public class TestPaymentMethod extends TestJaxrsBase {
             createAccountWithDefaultPaymentMethod();
         }
 
-        final PaymentMethods allPaymentMethods = killBillClient.getPaymentMethods();
+        final PaymentMethods allPaymentMethods = paymentMethodApi.getPaymentMethods(null, NULL_PLUGIN_PROPERTIES, requestOptions);
         Assert.assertEquals(allPaymentMethods.size(), 5);
 
-        PaymentMethods page = killBillClient.getPaymentMethods(0L, 1L);
+        PaymentMethods page = paymentMethodApi.getPaymentMethods(0L, 1L, null, false, NULL_PLUGIN_PROPERTIES, AuditLevel.NONE, requestOptions);
         for (int i = 0; i < 5; i++) {
             Assert.assertNotNull(page);
             Assert.assertEquals(page.size(), 1);
@@ -112,9 +112,11 @@ public class TestPaymentMethod extends TestJaxrsBase {
         customField.setObjectType(ObjectType.PAYMENT_METHOD);
         customField.setName("testKey");
         customField.setValue("testValue");
+        final CustomFields body = new CustomFields();
+        body.add(customField);
 
         // Create custom field
-        final CustomFields createdCustomFields = killBillClient.createPaymentMethodCustomField(paymentMethodId, customField, createdBy, reason, comment);
+        final CustomFields createdCustomFields = paymentMethodApi.createCustomFields(paymentMethodId, body, requestOptions);
         Assert.assertEquals(createdCustomFields.size(), 1);
         final CustomField createdCustomField = createdCustomFields.get(0);
         Assert.assertEquals(createdCustomField.getName(), "testKey");
@@ -123,7 +125,7 @@ public class TestPaymentMethod extends TestJaxrsBase {
         Assert.assertEquals(createdCustomField.getObjectType(), ObjectType.PAYMENT_METHOD);
 
         // Retrieve custom field
-        final CustomFields retrievedCustomFields = killBillClient.getPaymentMethodCustomFields(paymentMethodId, AuditLevel.NONE);
+        final CustomFields retrievedCustomFields = paymentMethodApi.getCustomFields(paymentMethodId, requestOptions);
         Assert.assertEquals(retrievedCustomFields.size(), 1);
         final CustomField retrievedCustomField = retrievedCustomFields.get(0);
         Assert.assertEquals(retrievedCustomField.getName(), "testKey");
@@ -132,17 +134,17 @@ public class TestPaymentMethod extends TestJaxrsBase {
         Assert.assertEquals(retrievedCustomField.getObjectType(), ObjectType.PAYMENT_METHOD);
 
         // Delete custom field
-        killBillClient.deletePaymentMethodCustomFields(paymentMethodId, Collections.<UUID>singletonList(createdCustomField.getCustomFieldId()), createdBy, reason, comment);
-        final CustomFields deletedCustomFields = killBillClient.getPaymentMethodCustomFields(paymentMethodId, AuditLevel.NONE);
+        paymentMethodApi.deleteCustomFields(paymentMethodId, Collections.<UUID>singletonList(createdCustomField.getCustomFieldId()), requestOptions);
+        final CustomFields deletedCustomFields = paymentMethodApi.getCustomFields(paymentMethodId, requestOptions);
         Assert.assertEquals(deletedCustomFields.size(), 0);
     }
 
     private void doSearch(final String searchKey, final PaymentMethod paymentMethodJson) throws Exception {
-        final List<PaymentMethod> results1 = killBillClient.searchPaymentMethodsByKey(searchKey, true);
+        final List<PaymentMethod> results1 = paymentMethodApi.searchPaymentMethods(searchKey, 0L, 100L, null, true, NULL_PLUGIN_PROPERTIES,  AuditLevel.NONE,  requestOptions);
         Assert.assertEquals(results1.size(), 1);
         Assert.assertEquals(results1.get(0), paymentMethodJson);
 
-        final List<PaymentMethod> results2 = killBillClient.searchPaymentMethodsByKeyAndPlugin(searchKey, PLUGIN_NAME);
+        final List<PaymentMethod> results2 = paymentMethodApi.searchPaymentMethods(searchKey, 0L, 100L, PLUGIN_NAME, true, NULL_PLUGIN_PROPERTIES, AuditLevel.NONE, requestOptions);
         Assert.assertEquals(results2.size(), 1);
         Assert.assertEquals(results2.get(0), paymentMethodJson);
     }
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentPluginProperties.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentPluginProperties.java
index 3d87984..b6d69f3 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentPluginProperties.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentPluginProperties.java
@@ -29,10 +29,10 @@ import javax.annotation.Nullable;
 import org.killbill.billing.client.KillBillClientException;
 import org.killbill.billing.client.KillBillHttpClient;
 import org.killbill.billing.client.RequestOptions;
-import org.killbill.billing.client.model.Account;
-import org.killbill.billing.client.model.Payment;
-import org.killbill.billing.client.model.PaymentTransaction;
-import org.killbill.billing.client.model.PluginProperty;
+import org.killbill.billing.client.model.gen.Account;
+import org.killbill.billing.client.model.gen.Payment;
+import org.killbill.billing.client.model.gen.PaymentTransaction;
+import org.killbill.billing.client.model.gen.PluginProperty;
 import org.killbill.billing.control.plugin.api.OnFailurePaymentControlResult;
 import org.killbill.billing.control.plugin.api.OnSuccessPaymentControlResult;
 import org.killbill.billing.control.plugin.api.PaymentControlApiException;
@@ -101,7 +101,7 @@ public class TestPaymentPluginProperties extends TestJaxrsBase {
 
         private void assertPluginProperties(final Iterable<org.killbill.billing.payment.api.PluginProperty> properties) {
             for (org.killbill.billing.payment.api.PluginProperty input : properties) {
-                boolean found  = false;
+                boolean found = false;
                 for (org.killbill.billing.payment.api.PluginProperty expect : expectedProperties) {
                     if (expect.getKey().equals(input.getKey()) && expect.getValue().equals(input.getValue())) {
                         found = true;
@@ -112,7 +112,7 @@ public class TestPaymentPluginProperties extends TestJaxrsBase {
             }
 
             for (org.killbill.billing.payment.api.PluginProperty expect : expectedProperties) {
-                boolean found  = false;
+                boolean found = false;
                 for (org.killbill.billing.payment.api.PluginProperty input : properties) {
                     if (expect.getKey().equals(input.getKey()) && expect.getValue().equals(input.getValue())) {
                         found = true;
@@ -229,7 +229,7 @@ public class TestPaymentPluginProperties extends TestJaxrsBase {
         final RequestOptions requestOptionsWithParams = basicRequestOptions.extend()
                                                                            .withQueryParams(params).build();
 
-        killBillClient.completePayment(completeTransactionByPaymentId, queryProperties, requestOptionsWithParams);
+        paymentApi.completeTransaction(completeTransactionByPaymentId, initialPayment.getPaymentId(), NULL_PLUGIN_NAMES, queryProperties, requestOptionsWithParams);
 
         //Capture the payment
         final PaymentTransaction captureTransaction = new PaymentTransaction();
@@ -237,7 +237,7 @@ public class TestPaymentPluginProperties extends TestJaxrsBase {
         captureTransaction.setProperties(bodyProperties);
         captureTransaction.setAmount(BigDecimal.TEN);
         captureTransaction.setCurrency(account.getCurrency());
-        killBillClient.captureAuthorization(captureTransaction, ImmutableList.<String>of(PluginPropertiesVerificator.PLUGIN_NAME), queryProperties, requestOptions);
+        paymentApi.captureAuthorization(captureTransaction, initialPayment.getPaymentId(), ImmutableList.<String>of(PluginPropertiesVerificator.PLUGIN_NAME), queryProperties, requestOptions);
 
         //Refund the payment
         final PaymentTransaction refundTransaction = new PaymentTransaction();
@@ -245,7 +245,7 @@ public class TestPaymentPluginProperties extends TestJaxrsBase {
         refundTransaction.setProperties(bodyProperties);
         refundTransaction.setAmount(BigDecimal.TEN);
         refundTransaction.setCurrency(account.getCurrency());
-        killBillClient.refundPayment(refundTransaction, ImmutableList.<String>of(PluginPropertiesVerificator.PLUGIN_NAME), queryProperties, requestOptions);
+        paymentApi.refundPayment(refundTransaction, initialPayment.getPaymentId(), ImmutableList.<String>of(PluginPropertiesVerificator.PLUGIN_NAME), queryProperties, requestOptions);
     }
 
     private Payment createVerifyTransaction(final Account account,
@@ -260,8 +260,8 @@ public class TestPaymentPluginProperties extends TestJaxrsBase {
         authTransaction.setCurrency(account.getCurrency());
         authTransaction.setPaymentExternalKey(paymentExternalKey);
         authTransaction.setTransactionExternalKey(transactionExternalKey);
-        authTransaction.setTransactionType(transactionType.toString());
-        final Payment payment = killBillClient.createPayment(account.getAccountId(), paymentMethodId, authTransaction, pluginProperties, requestOptions);
+        authTransaction.setTransactionType(transactionType);
+        final Payment payment = accountApi.processPayment(authTransaction, account.getAccountId(), paymentMethodId, NULL_PLUGIN_NAMES, pluginProperties, requestOptions);
         return payment;
     }
 
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPerTenantConfig.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPerTenantConfig.java
index a8d572d..c859db3 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPerTenantConfig.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPerTenantConfig.java
@@ -21,10 +21,12 @@ import java.util.HashMap;
 import java.util.concurrent.Callable;
 import java.util.concurrent.TimeUnit;
 
-import org.killbill.billing.client.model.Account;
+import org.awaitility.Awaitility;
+import org.awaitility.Duration;
 import org.killbill.billing.client.model.Payments;
-import org.killbill.billing.client.model.Tenant;
-import org.killbill.billing.client.model.TenantKey;
+import org.killbill.billing.client.model.gen.Account;
+import org.killbill.billing.client.model.gen.Tenant;
+import org.killbill.billing.client.model.gen.TenantKeyValue;
 import org.killbill.billing.osgi.api.OSGIServiceRegistration;
 import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.plugin.api.PaymentPluginApi;
@@ -36,8 +38,6 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.google.inject.Inject;
-import org.awaitility.Awaitility;
-import org.awaitility.Duration;
 
 public class TestPerTenantConfig extends TestJaxrsBase {
 
@@ -66,7 +66,7 @@ public class TestPerTenantConfig extends TestJaxrsBase {
         final Tenant tenant1 = new Tenant();
         tenant1.setApiKey(apiKeyTenant1);
         tenant1.setApiSecret(apiSecretTenant1);
-        killBillClient.createTenant(tenant1, createdBy, reason, comment);
+        tenantApi.createTenant(tenant1, true, requestOptions);
 
         // Configure our plugin to fail
         mockPaymentProviderPlugin.makeAllInvoicesFailWithError(true);
@@ -77,11 +77,11 @@ public class TestPerTenantConfig extends TestJaxrsBase {
         perTenantProperties.put("org.killbill.payment.retry.days", "1,1,1");
         final String perTenantConfig = mapper.writeValueAsString(perTenantProperties);
 
-        final TenantKey tenantKey = killBillClient.postConfigurationPropertiesForTenant(perTenantConfig, requestOptions);
+        final TenantKeyValue tenantKey = tenantApi.uploadPerTenantConfiguration(perTenantConfig, requestOptions);
 
         final Account accountJson = createAccountWithPMBundleAndSubscriptionAndWaitForFirstInvoice();
 
-        final Payments payments = killBillClient.getPaymentsForAccount(accountJson.getAccountId());
+        final Payments payments = accountApi.getPayments(accountJson.getAccountId(), NULL_PLUGIN_PROPERTIES, requestOptions);
         Assert.assertEquals(payments.size(), 1);
         Assert.assertEquals(payments.get(0).getTransactions().size(), 1);
 
@@ -92,7 +92,8 @@ public class TestPerTenantConfig extends TestJaxrsBase {
         //
         // Now unregister special per tenant config and we the first retry occurs one day after (and still fails), it now sets a retry date of 8 days
         //
-        killBillClient.unregisterConfigurationForTenant(requestOptions);
+
+        tenantApi.deletePerTenantConfiguration(requestOptions);
         // org.killbill.tenant.broadcast.rate has been set to 1s
         crappyWaitForLackOfProperSynchonization(2000);
 
@@ -105,20 +106,20 @@ public class TestPerTenantConfig extends TestJaxrsBase {
                       @Override
                       public Boolean call() throws Exception {
 
-                          return killBillClient.getPaymentsForAccount(accountJson.getAccountId()).get(0).getTransactions().size() == 2;
+                          return accountApi.getPayments(accountJson.getAccountId(), NULL_PLUGIN_PROPERTIES, requestOptions).get(0).getTransactions().size() == 2;
                       }
                   });
-        final Payments payments2 = killBillClient.getPaymentsForAccount(accountJson.getAccountId());
+        final Payments payments2 = accountApi.getPayments(accountJson.getAccountId(), NULL_PLUGIN_PROPERTIES, requestOptions);
         Assert.assertEquals(payments2.size(), 1);
         Assert.assertEquals(payments2.get(0).getTransactions().size(), 2);
-        Assert.assertEquals(payments2.get(0).getTransactions().get(0).getStatus(), TransactionStatus.PAYMENT_FAILURE.name());
-        Assert.assertEquals(payments2.get(0).getTransactions().get(1).getStatus(), TransactionStatus.PAYMENT_FAILURE.name());
+        Assert.assertEquals(payments2.get(0).getTransactions().get(0).getStatus(), TransactionStatus.PAYMENT_FAILURE);
+        Assert.assertEquals(payments2.get(0).getTransactions().get(1).getStatus(), TransactionStatus.PAYMENT_FAILURE);
 
         clock.addDays(1);
         crappyWaitForLackOfProperSynchonization(3000);
 
         // No retry with default config
-        final Payments payments3 = killBillClient.getPaymentsForAccount(accountJson.getAccountId());
+        final Payments payments3 = accountApi.getPayments(accountJson.getAccountId(), NULL_PLUGIN_PROPERTIES, requestOptions);
         Assert.assertEquals(payments3.size(), 1);
         Assert.assertEquals(payments3.get(0).getTransactions().size(), 2);
 
@@ -131,14 +132,14 @@ public class TestPerTenantConfig extends TestJaxrsBase {
                   .until(new Callable<Boolean>() {
                       @Override
                       public Boolean call() throws Exception {
-                          return killBillClient.getPaymentsForAccount(accountJson.getAccountId()).get(0).getTransactions().size() == 3;
+                          return accountApi.getPayments(accountJson.getAccountId(), NULL_PLUGIN_PROPERTIES, requestOptions).get(0).getTransactions().size() == 3;
                       }
                   });
-        final Payments payments4 = killBillClient.getPaymentsForAccount(accountJson.getAccountId());
+        final Payments payments4 = accountApi.getPayments(accountJson.getAccountId(), NULL_PLUGIN_PROPERTIES, requestOptions);
         Assert.assertEquals(payments4.size(), 1);
         Assert.assertEquals(payments4.get(0).getTransactions().size(), 3);
-        Assert.assertEquals(payments4.get(0).getTransactions().get(0).getStatus(), TransactionStatus.PAYMENT_FAILURE.name());
-        Assert.assertEquals(payments4.get(0).getTransactions().get(1).getStatus(), TransactionStatus.PAYMENT_FAILURE.name());
-        Assert.assertEquals(payments4.get(0).getTransactions().get(2).getStatus(), TransactionStatus.SUCCESS.name());
+        Assert.assertEquals(payments4.get(0).getTransactions().get(0).getStatus(), TransactionStatus.PAYMENT_FAILURE);
+        Assert.assertEquals(payments4.get(0).getTransactions().get(1).getStatus(), TransactionStatus.PAYMENT_FAILURE);
+        Assert.assertEquals(payments4.get(0).getTransactions().get(2).getStatus(), TransactionStatus.SUCCESS);
     }
 }
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPlugin.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPlugin.java
index 3b4ce0c..1817efe 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPlugin.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPlugin.java
@@ -27,6 +27,7 @@ import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.killbill.billing.client.RequestOptions;
 import org.killbill.billing.osgi.http.DefaultServletRouter;
 import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
@@ -36,6 +37,8 @@ import com.ning.http.client.Response;
 
 public class TestPlugin extends TestJaxrsBase {
 
+    private static final String PLUGIN_PATH = "/plugins/";
+
     private static final String TEST_PLUGIN_NAME = "test-osgi";
 
     private static final byte[] TEST_PLUGIN_RESPONSE_BYTES = new byte[]{0xC, 0x0, 0xF, 0xF, 0xE, 0xE};
@@ -69,22 +72,22 @@ public class TestPlugin extends TestJaxrsBase {
 
         // We don't test the output here as it is some Jetty specific HTML blurb
 
-        response = killBillClient.pluginGET(uri);
+        response = pluginGET(uri, requestOptions);
         testAndResetAllMarkers(response, 404, null, false, false, false, false, false, false);
 
-        response = killBillClient.pluginHEAD(uri);
+        response = pluginHEAD(uri, requestOptions);
         testAndResetAllMarkers(response, 404, null, false, false, false, false, false, false);
 
-        response = killBillClient.pluginPOST(uri, null);
+        response = pluginPOST(uri, null, requestOptions);
         testAndResetAllMarkers(response, 404, null, false, false, false, false, false, false);
 
-        response = killBillClient.pluginPUT(uri, null);
+        response = pluginPUT(uri, null, requestOptions);
         testAndResetAllMarkers(response, 404, null, false, false, false, false, false, false);
 
-        response = killBillClient.pluginDELETE(uri);
+        response = pluginDELETE(uri, requestOptions);
         testAndResetAllMarkers(response, 404, null, false, false, false, false, false, false);
 
-        response = killBillClient.pluginOPTIONS(uri);
+        response = pluginOPTIONS(uri, requestOptions);
         testAndResetAllMarkers(response, 404, null, false, false, false, false, false, false);
     }
 
@@ -93,22 +96,22 @@ public class TestPlugin extends TestJaxrsBase {
         final String uri = TEST_PLUGIN_NAME + "/somethingSomething";
         Response response;
 
-        response = killBillClient.pluginGET(uri);
+        response = pluginGET(uri, requestOptions);
         testAndResetAllMarkers(response, 200, new byte[]{}, false, false, false, false, false, false);
 
-        response = killBillClient.pluginHEAD(uri);
+        response = pluginHEAD(uri, requestOptions);
         testAndResetAllMarkers(response, 204, new byte[]{}, false, false, false, false, false, false);
 
-        response = killBillClient.pluginPOST(uri, null);
+        response = pluginPOST(uri, null, requestOptions);
         testAndResetAllMarkers(response, 200, new byte[]{}, false, false, false, false, false, false);
 
-        response = killBillClient.pluginPUT(uri, null);
+        response = pluginPUT(uri, null, requestOptions);
         testAndResetAllMarkers(response, 200, new byte[]{}, false, false, false, false, false, false);
 
-        response = killBillClient.pluginDELETE(uri);
+        response = pluginDELETE(uri, requestOptions);
         testAndResetAllMarkers(response, 200, new byte[]{}, false, false, false, false, false, false);
 
-        response = killBillClient.pluginOPTIONS(uri);
+        response = pluginOPTIONS(uri, requestOptions);
         testAndResetAllMarkers(response, 200, new byte[]{}, false, false, false, false, false, false);
     }
 
@@ -116,22 +119,22 @@ public class TestPlugin extends TestJaxrsBase {
     public void testPassRequestsToKnownPluginAndKnownPath() throws Exception {
         Response response;
 
-        response = killBillClient.pluginGET(TEST_PLUGIN_NAME + "/" + TEST_PLUGIN_VALID_GET_PATH);
+        response = pluginGET(TEST_PLUGIN_NAME + "/" + TEST_PLUGIN_VALID_GET_PATH, requestOptions);
         testAndResetAllMarkers(response, 230, TEST_PLUGIN_RESPONSE_BYTES, true, false, false, false, false, false);
 
-        response = killBillClient.pluginHEAD(TEST_PLUGIN_NAME + "/" + TEST_PLUGIN_VALID_HEAD_PATH);
+        response = pluginHEAD(TEST_PLUGIN_NAME + "/" + TEST_PLUGIN_VALID_HEAD_PATH, requestOptions);
         testAndResetAllMarkers(response, 204, new byte[]{}, false, true, false, false, false, false);
 
-        response = killBillClient.pluginPOST(TEST_PLUGIN_NAME + "/" + TEST_PLUGIN_VALID_POST_PATH, null);
+        response = pluginPOST(TEST_PLUGIN_NAME + "/" + TEST_PLUGIN_VALID_POST_PATH, null, requestOptions);
         testAndResetAllMarkers(response, 230, TEST_PLUGIN_RESPONSE_BYTES, false, false, true, false, false, false);
 
-        response = killBillClient.pluginPUT(TEST_PLUGIN_NAME + "/" + TEST_PLUGIN_VALID_PUT_PATH, null);
+        response = pluginPUT(TEST_PLUGIN_NAME + "/" + TEST_PLUGIN_VALID_PUT_PATH, null, requestOptions);
         testAndResetAllMarkers(response, 230, TEST_PLUGIN_RESPONSE_BYTES, false, false, false, true, false, false);
 
-        response = killBillClient.pluginDELETE(TEST_PLUGIN_NAME + "/" + TEST_PLUGIN_VALID_DELETE_PATH);
+        response = pluginDELETE(TEST_PLUGIN_NAME + "/" + TEST_PLUGIN_VALID_DELETE_PATH, requestOptions);
         testAndResetAllMarkers(response, 230, TEST_PLUGIN_RESPONSE_BYTES, false, false, false, false, true, false);
 
-        response = killBillClient.pluginOPTIONS(TEST_PLUGIN_NAME + "/" + TEST_PLUGIN_VALID_OPTIONS_PATH);
+        response = pluginOPTIONS(TEST_PLUGIN_NAME + "/" + TEST_PLUGIN_VALID_OPTIONS_PATH, requestOptions);
         testAndResetAllMarkers(response, 230, TEST_PLUGIN_RESPONSE_BYTES, false, false, false, false, false, true);
     }
 
@@ -166,6 +169,33 @@ public class TestPlugin extends TestJaxrsBase {
         requestOPTIONSMarker.set(false);
     }
 
+    //
+    // Plugin routing endpoints are not officially part of api (yet)
+    //
+    private Response pluginGET(final String uri, final RequestOptions inputOptions) throws Exception {
+        return killBillHttpClient.doGet(PLUGIN_PATH + uri, inputOptions);
+    }
+
+    private Response pluginHEAD(final String uri, final RequestOptions inputOptions) throws Exception {
+        return killBillHttpClient.doHead(PLUGIN_PATH + uri, inputOptions);
+    }
+
+    private Response pluginPOST(final String uri, @Nullable final String body, final RequestOptions inputOptions) throws Exception {
+        return killBillHttpClient.doPost(PLUGIN_PATH + uri, body, inputOptions);
+    }
+
+    private Response pluginDELETE(final String uri, final RequestOptions inputOptions) throws Exception {
+        return killBillHttpClient.doDelete(PLUGIN_PATH + uri, inputOptions);
+    }
+
+    private Response pluginPUT(final String uri, @Nullable final String body, final RequestOptions inputOptions) throws Exception {
+        return killBillHttpClient.doPut(PLUGIN_PATH + uri, body, inputOptions);
+    }
+
+    private Response pluginOPTIONS(final String uri, final RequestOptions inputOptions) throws Exception {
+        return killBillHttpClient.doOptions(PLUGIN_PATH + uri, inputOptions);
+    }
+
     private void setupOSGIPlugin() {
         ((DefaultServletRouter) servletRouter).registerServiceFromPath(TEST_PLUGIN_NAME, new HttpServlet() {
             @Override
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestTag.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestTag.java
index ae69442..9ece1a5 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestTag.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestTag.java
@@ -28,17 +28,19 @@ import org.killbill.billing.ObjectType;
 import org.killbill.billing.catalog.api.BillingPeriod;
 import org.killbill.billing.catalog.api.ProductCategory;
 import org.killbill.billing.client.KillBillClientException;
-import org.killbill.billing.client.model.Account;
-import org.killbill.billing.client.model.Subscription;
-import org.killbill.billing.client.model.Tag;
-import org.killbill.billing.client.model.TagDefinition;
 import org.killbill.billing.client.model.Tags;
+import org.killbill.billing.client.model.gen.Account;
+import org.killbill.billing.client.model.gen.Subscription;
+import org.killbill.billing.client.model.gen.Tag;
+import org.killbill.billing.client.model.gen.TagDefinition;
 import org.killbill.billing.util.api.AuditLevel;
 import org.killbill.billing.util.tag.ControlTagType;
 import org.killbill.billing.util.tag.dao.SystemTags;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
+import com.ning.http.util.UTF8UrlEncoder;
+
 import com.google.common.collect.ImmutableList;
 
 import static org.testng.Assert.assertEquals;
@@ -49,26 +51,24 @@ public class TestTag extends TestJaxrsBase {
 
     @Test(groups = "slow", description = "Cannot add badly formatted TagDefinition")
     public void testTagErrorHandling() throws Exception {
-        final TagDefinition[] tagDefinitions = {new TagDefinition(null, false, null, null,  ImmutableList.<ObjectType>of(ObjectType.ACCOUNT)),
-                                                new TagDefinition(null, false, "something", null,  ImmutableList.<ObjectType>of(ObjectType.INVOICE)),
-                                                new TagDefinition(null, false, null, "something",  ImmutableList.<ObjectType>of(ObjectType.TRANSACTION))};
+        final TagDefinition[] tagDefinitions = {new TagDefinition(null, false, null, null, ImmutableList.<ObjectType>of(ObjectType.ACCOUNT), null),
+                                                new TagDefinition(null, false, "something", null, ImmutableList.<ObjectType>of(ObjectType.INVOICE), null),
+                                                new TagDefinition(null, false, null, "something", ImmutableList.<ObjectType>of(ObjectType.TRANSACTION), null)};
 
         for (final TagDefinition tagDefinition : tagDefinitions) {
             try {
-                killBillClient.createTagDefinition(tagDefinition, requestOptions);
+                tagDefinitionApi.createTagDefinition(tagDefinition, requestOptions);
                 fail();
             } catch (final KillBillClientException e) {
             }
         }
     }
 
-
-
     @Test(groups = "slow", description = "Can create a TagDefinition")
     public void testTagDefinitionOk() throws Exception {
-        final TagDefinition input = new TagDefinition(null, false, "blue", "relaxing color",  ImmutableList.<ObjectType>of(ObjectType.TRANSACTION));
+        final TagDefinition input = new TagDefinition(null, false, "blue", "relaxing color", ImmutableList.<ObjectType>of(ObjectType.TRANSACTION), null);
 
-        final TagDefinition objFromJson = killBillClient.createTagDefinition(input, requestOptions);
+        final TagDefinition objFromJson = tagDefinitionApi.createTagDefinition(input, requestOptions);
         assertNotNull(objFromJson);
         assertEquals(objFromJson.getName(), input.getName());
         assertEquals(objFromJson.getDescription(), input.getDescription());
@@ -76,34 +76,32 @@ public class TestTag extends TestJaxrsBase {
 
     @Test(groups = "slow", description = "Can create and delete TagDefinitions")
     public void testMultipleTagDefinitionOk() throws Exception {
-        List<TagDefinition> objFromJson = killBillClient.getTagDefinitions(requestOptions);
+        List<TagDefinition> objFromJson = tagDefinitionApi.getTagDefinitions(requestOptions);
         final int sizeSystemTag = objFromJson.isEmpty() ? 0 : objFromJson.size();
 
+        final TagDefinition inputBlue = new TagDefinition(null, false, "blue", "relaxing color", ImmutableList.<ObjectType>of(ObjectType.TRANSACTION), null);
+        tagDefinitionApi.createTagDefinition(inputBlue, requestOptions);
 
-        final TagDefinition inputBlue = new TagDefinition(null, false, "blue", "relaxing color",  ImmutableList.<ObjectType>of(ObjectType.TRANSACTION));
-        killBillClient.createTagDefinition(inputBlue, requestOptions);
-
-        final TagDefinition inputRed = new TagDefinition(null, false, "red", "hot color",  ImmutableList.<ObjectType>of(ObjectType.TRANSACTION));
-        killBillClient.createTagDefinition(inputRed, requestOptions);
+        final TagDefinition inputRed = new TagDefinition(null, false, "red", "hot color", ImmutableList.<ObjectType>of(ObjectType.TRANSACTION), null);
+        tagDefinitionApi.createTagDefinition(inputRed, requestOptions);
 
-        final TagDefinition inputYellow = new TagDefinition(null, false, "yellow", "vibrant color",  ImmutableList.<ObjectType>of(ObjectType.TRANSACTION));
-        killBillClient.createTagDefinition(inputYellow, requestOptions);
+        final TagDefinition inputYellow = new TagDefinition(null, false, "yellow", "vibrant color", ImmutableList.<ObjectType>of(ObjectType.TRANSACTION), null);
+        tagDefinitionApi.createTagDefinition(inputYellow, requestOptions);
 
-        final TagDefinition inputGreen = new TagDefinition(null, false, "green", "super relaxing color",  ImmutableList.<ObjectType>of(ObjectType.TRANSACTION));
-        killBillClient.createTagDefinition(inputGreen, requestOptions);
+        final TagDefinition inputGreen = new TagDefinition(null, false, "green", "super relaxing color", ImmutableList.<ObjectType>of(ObjectType.TRANSACTION), null);
+        tagDefinitionApi.createTagDefinition(inputGreen, requestOptions);
 
-        objFromJson = killBillClient.getTagDefinitions(requestOptions);
+        objFromJson = tagDefinitionApi.getTagDefinitions(requestOptions);
         assertNotNull(objFromJson);
         assertEquals(objFromJson.size(), 4 + sizeSystemTag);
 
-        killBillClient.deleteTagDefinition(objFromJson.get(0).getId(), requestOptions);
+        tagDefinitionApi.deleteTagDefinition(objFromJson.get(0).getId(), requestOptions);
 
-        objFromJson = killBillClient.getTagDefinitions(requestOptions);
+        objFromJson = tagDefinitionApi.getTagDefinitions(requestOptions);
         assertNotNull(objFromJson);
         assertEquals(objFromJson.size(), 3 + sizeSystemTag);
     }
 
-
     @Test(groups = "slow", description = "Can search all tags for an account")
     public void testGetAllTagsByType() throws Exception {
 
@@ -112,43 +110,43 @@ public class TestTag extends TestJaxrsBase {
 
         final Account account = createAccountWithDefaultPaymentMethod();
 
-        final Subscription subscriptionJson = createEntitlement(account.getAccountId(), "87544332", "Shotgun",
+        final Subscription subscriptionJson = createSubscription(account.getAccountId(), "87544332", "Shotgun",
                                                                 ProductCategory.BASE, BillingPeriod.MONTHLY, true);
 
         for (final ControlTagType controlTagType : ControlTagType.values()) {
-            killBillClient.createAccountTag(account.getAccountId(), controlTagType.getId(), requestOptions);
+            accountApi.createTags(account.getAccountId(), ImmutableList.<String>of(controlTagType.getId().toString()), requestOptions);
         }
 
-        final TagDefinition bundleTagDefInput = new TagDefinition(null, false, "bundletagdef", "nothing special",  ImmutableList.<ObjectType>of(ObjectType.TRANSACTION));
-        final TagDefinition bundleTagDef = killBillClient.createTagDefinition(bundleTagDefInput, requestOptions);
+        final TagDefinition bundleTagDefInput = new TagDefinition(null, false, "bundletagdef", "nothing special", ImmutableList.<ObjectType>of(ObjectType.TRANSACTION), null);
+        final TagDefinition bundleTagDef = tagDefinitionApi.createTagDefinition(bundleTagDefInput, requestOptions);
 
-        killBillClient.createBundleTag(subscriptionJson.getBundleId(), bundleTagDef.getId(), requestOptions);
+        bundleApi.createTags(subscriptionJson.getBundleId(), ImmutableList.<String>of(bundleTagDef.getId().toString()), requestOptions);
 
-        final Tags allBundleTags = killBillClient.getBundleTags(subscriptionJson.getBundleId(), AuditLevel.FULL, requestOptions);
+        final Tags allBundleTags = bundleApi.getTags(subscriptionJson.getBundleId(), requestOptions);
         Assert.assertEquals(allBundleTags.size(), 1);
 
-        final Tags allAccountTags = killBillClient.getAllAccountTags(account.getAccountId(), null, AuditLevel.FULL, requestOptions);
+        final Tags allAccountTags = accountApi.getAllTags(account.getAccountId(), null, requestOptions);
         Assert.assertEquals(allAccountTags.size(), ControlTagType.values().length + 1);
 
-
-        final Tags allBundleTagsForAccount = killBillClient.getAllAccountTags(account.getAccountId(), ObjectType.BUNDLE.name(), AuditLevel.FULL, requestOptions);
+        final Tags allBundleTagsForAccount = accountApi.getAllTags(account.getAccountId(), ObjectType.BUNDLE, requestOptions);
         Assert.assertEquals(allBundleTagsForAccount.size(), 1);
     }
 
-
     @Test(groups = "slow", description = "Can search system tags")
     public void testSystemTagsPagination() throws Exception {
         final Account account = createAccount();
         for (final ControlTagType controlTagType : ControlTagType.values()) {
-            killBillClient.createAccountTag(account.getAccountId(), controlTagType.getId(), requestOptions);
+            accountApi.createTags(account.getAccountId(), ImmutableList.<String>of(controlTagType.getId().toString()), requestOptions);
         }
 
-        final Tags allTags = killBillClient.getTags(requestOptions);
+        final Tags allTags = accountApi.getTags(account.getAccountId(), requestOptions);
         Assert.assertEquals(allTags.size(), ControlTagType.values().length);
 
         for (final ControlTagType controlTagType : ControlTagType.values()) {
-            Assert.assertEquals(killBillClient.searchTags(controlTagType.toString(), requestOptions).size(), 1);
-            Assert.assertEquals(killBillClient.searchTags(controlTagType.getDescription(), requestOptions).size(), 1);
+            Assert.assertEquals(tagApi.searchTags(controlTagType.toString(), requestOptions).size(), 1);
+            // TODO Hack until we fix client api
+
+            Assert.assertEquals(tagApi.searchTags(UTF8UrlEncoder.encodePath(controlTagType.getDescription()), requestOptions).size(), 1);
         }
     }
 
@@ -158,7 +156,7 @@ public class TestTag extends TestJaxrsBase {
         final Account account = createAccount();
 
         try {
-            killBillClient.createAccountTag(account.getAccountId(), SystemTags.PARK_TAG_DEFINITION_ID, requestOptions);
+            accountApi.createTags(account.getAccountId(), ImmutableList.<String>of(SystemTags.PARK_TAG_DEFINITION_ID.toString()), requestOptions);
             Assert.fail("Creating a tag associated with a system tag should fail");
         } catch (final Exception e) {
             Assert.assertTrue(true);
@@ -169,15 +167,15 @@ public class TestTag extends TestJaxrsBase {
     public void testTagsPagination() throws Exception {
         final Account account = createAccount();
         for (int i = 0; i < 5; i++) {
-            final TagDefinition tagDefinition = new TagDefinition(null, false, UUID.randomUUID().toString().substring(0, 5), UUID.randomUUID().toString(), ImmutableList.<ObjectType>of(ObjectType.ACCOUNT));
-            final UUID tagDefinitionId = killBillClient.createTagDefinition(tagDefinition, requestOptions).getId();
-            killBillClient.createAccountTag(account.getAccountId(), tagDefinitionId, requestOptions);
+            final TagDefinition tagDefinition = new TagDefinition(null, false, UUID.randomUUID().toString().substring(0, 5), UUID.randomUUID().toString(), ImmutableList.<ObjectType>of(ObjectType.ACCOUNT), null);
+            final UUID tagDefinitionId = tagDefinitionApi.createTagDefinition(tagDefinition, requestOptions).getId();
+            accountApi.createTags(account.getAccountId(), ImmutableList.<String>of(tagDefinitionId.toString()), requestOptions);
         }
 
-        final Tags allTags = killBillClient.getTags(requestOptions);
+        final Tags allTags = accountApi.getTags(account.getAccountId(), requestOptions);
         Assert.assertEquals(allTags.size(), 5);
 
-        Tags page = killBillClient.getTags(0L, 1L, requestOptions);
+        Tags page = tagApi.getTags(0L, 1L, AuditLevel.NONE, requestOptions);
         for (int i = 0; i < 5; i++) {
             Assert.assertNotNull(page);
             Assert.assertEquals(page.size(), 1);
@@ -191,11 +189,11 @@ public class TestTag extends TestJaxrsBase {
             doSearchTag(tag.getTagId().toString(), tag);
             doSearchTag(tag.getTagDefinitionName(), tag);
 
-            final TagDefinition tagDefinition = killBillClient.getTagDefinition(tag.getTagDefinitionId(), requestOptions);
+            final TagDefinition tagDefinition = tagDefinitionApi.getTagDefinition(tag.getTagDefinitionId(), requestOptions);
             doSearchTag(tagDefinition.getDescription(), tag);
         }
 
-        final Tags tags = killBillClient.searchTags(ObjectType.ACCOUNT.toString(), requestOptions);
+        final Tags tags = tagApi.searchTags(ObjectType.ACCOUNT.toString(), requestOptions);
         Assert.assertEquals(tags.size(), 5);
         Assert.assertEquals(tags.getPaginationCurrentOffset(), 0);
         Assert.assertEquals(tags.getPaginationTotalNbRecords(), 5);
@@ -203,7 +201,7 @@ public class TestTag extends TestJaxrsBase {
     }
 
     private void doSearchTag(final String searchKey, @Nullable final Tag expectedTag) throws KillBillClientException {
-        final Tags tags = killBillClient.searchTags(searchKey, requestOptions);
+        final Tags tags = tagApi.searchTags(searchKey, requestOptions);
         if (expectedTag == null) {
             Assert.assertTrue(tags.isEmpty());
             Assert.assertEquals(tags.getPaginationCurrentOffset(), 0);
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestTenantKV.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestTenantKV.java
index fbff4b5..966742d 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestTenantKV.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestTenantKV.java
@@ -23,28 +23,27 @@ import java.util.concurrent.Callable;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
 
+import org.awaitility.Awaitility;
+import org.awaitility.Duration;
 import org.killbill.billing.ErrorCode;
 import org.killbill.billing.client.KillBillClientException;
 import org.killbill.billing.client.RequestOptions;
-import org.killbill.billing.client.model.Account;
-import org.killbill.billing.client.model.ComboPaymentTransaction;
-import org.killbill.billing.client.model.Payment;
-import org.killbill.billing.client.model.PaymentMethod;
-import org.killbill.billing.client.model.PaymentMethodPluginDetail;
-import org.killbill.billing.client.model.PaymentTransaction;
-import org.killbill.billing.client.model.PluginProperty;
-import org.killbill.billing.client.model.Tenant;
-import org.killbill.billing.client.model.TenantKey;
+import org.killbill.billing.client.model.gen.Account;
+import org.killbill.billing.client.model.gen.ComboPaymentTransaction;
+import org.killbill.billing.client.model.gen.Payment;
+import org.killbill.billing.client.model.gen.PaymentMethod;
+import org.killbill.billing.client.model.gen.PaymentMethodPluginDetail;
+import org.killbill.billing.client.model.gen.PaymentTransaction;
+import org.killbill.billing.client.model.gen.PluginProperty;
+import org.killbill.billing.client.model.gen.Tenant;
+import org.killbill.billing.client.model.gen.TenantKeyValue;
 import org.killbill.billing.payment.api.TransactionStatus;
+import org.killbill.billing.payment.api.TransactionType;
 import org.killbill.billing.tenant.api.TenantKV;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.io.Resources;
-import org.awaitility.Awaitility;
-import org.awaitility.Duration;
 
 public class TestTenantKV extends TestJaxrsBase {
 
@@ -52,16 +51,16 @@ public class TestTenantKV extends TestJaxrsBase {
     public void testPerTenantPluginConfig() throws Exception {
         final String pluginName = "PLUGIN_FOO";
 
-        final String pluginPath = Resources.getResource("plugin.yml").getPath();
-        final TenantKey tenantKey0 = killBillClient.registerPluginConfigurationForTenant(pluginName, pluginPath, createdBy, reason, comment);
+        final String pluginConfig = getResourceBodyString("plugin.yml");
+        final TenantKeyValue tenantKey0 = tenantApi.uploadPluginConfiguration(pluginConfig, pluginName, requestOptions);
         Assert.assertEquals(tenantKey0.getKey(), TenantKV.TenantKey.PLUGIN_CONFIG_.toString() + pluginName);
 
-        final TenantKey tenantKey1 = killBillClient.getPluginConfigurationForTenant(pluginName);
+        final TenantKeyValue tenantKey1 = tenantApi.getPluginConfiguration(pluginName, requestOptions);
         Assert.assertEquals(tenantKey1.getKey(), TenantKV.TenantKey.PLUGIN_CONFIG_.toString() + pluginName);
         Assert.assertEquals(tenantKey1.getValues().size(), 1);
 
-        killBillClient.unregisterPluginConfigurationForTenant(pluginName, createdBy, reason, comment);
-        final TenantKey tenantKey2 = killBillClient.getPluginConfigurationForTenant(pluginName);
+        tenantApi.deletePluginConfiguration(pluginName, requestOptions);
+        final TenantKeyValue tenantKey2 = tenantApi.getPluginConfiguration(pluginName, requestOptions);
         Assert.assertEquals(tenantKey2.getKey(), TenantKV.TenantKey.PLUGIN_CONFIG_.toString() + pluginName);
         Assert.assertEquals(tenantKey2.getValues().size(), 0);
     }
@@ -72,26 +71,26 @@ public class TestTenantKV extends TestJaxrsBase {
         final Tenant otherTenantWithDifferentStateMachine = new Tenant();
         otherTenantWithDifferentStateMachine.setApiKey(UUID.randomUUID().toString());
         otherTenantWithDifferentStateMachine.setApiSecret(UUID.randomUUID().toString());
-        killBillClient.createTenant(otherTenantWithDifferentStateMachine, true, requestOptions);
+        tenantApi.createTenant(otherTenantWithDifferentStateMachine, true, requestOptions);
         final RequestOptions requestOptionsOtherTenant = requestOptions.extend()
                                                                        .withTenantApiKey(otherTenantWithDifferentStateMachine.getApiKey())
                                                                        .withTenantApiSecret(otherTenantWithDifferentStateMachine.getApiSecret())
                                                                        .build();
 
         // Verify initial state
-        final TenantKey emptyTenantKey = killBillClient.getPluginPaymentStateMachineConfigurationForTenant(PLUGIN_NAME, requestOptions);
+        final TenantKeyValue emptyTenantKey = tenantApi.getPluginPaymentStateMachineConfig(PLUGIN_NAME, requestOptions);
         Assert.assertEquals(emptyTenantKey.getValues().size(), 0);
-        final TenantKey emptyTenantKeyOtherTenant = killBillClient.getPluginPaymentStateMachineConfigurationForTenant(PLUGIN_NAME, requestOptionsOtherTenant);
+        final TenantKeyValue emptyTenantKeyOtherTenant = tenantApi.getPluginPaymentStateMachineConfig(PLUGIN_NAME, requestOptionsOtherTenant);
         Assert.assertEquals(emptyTenantKeyOtherTenant.getValues().size(), 0);
 
-        final String stateMachineConfigPath = Resources.getResource("SimplePaymentStates.xml").getPath();
-        final TenantKey tenantKey0 = killBillClient.registerPluginPaymentStateMachineConfigurationForTenant(PLUGIN_NAME, stateMachineConfigPath, requestOptionsOtherTenant);
+        final String stateMachineConfig = getResourceBodyString("SimplePaymentStates.xml");
+        final TenantKeyValue tenantKey0 = tenantApi.uploadPluginPaymentStateMachineConfig(stateMachineConfig, PLUGIN_NAME, requestOptionsOtherTenant);
         Assert.assertEquals(tenantKey0.getKey(), TenantKV.TenantKey.PLUGIN_PAYMENT_STATE_MACHINE_.toString() + PLUGIN_NAME);
 
         // Verify only the other tenant has the new state machine
-        final TenantKey emptyTenantKey1 = killBillClient.getPluginPaymentStateMachineConfigurationForTenant(PLUGIN_NAME, requestOptions);
+        final TenantKeyValue emptyTenantKey1 = tenantApi.getPluginPaymentStateMachineConfig(PLUGIN_NAME, requestOptions);
         Assert.assertEquals(emptyTenantKey1.getValues().size(), 0);
-        final TenantKey tenantKey1OtherTenant = killBillClient.getPluginPaymentStateMachineConfigurationForTenant(PLUGIN_NAME, requestOptionsOtherTenant);
+        final TenantKeyValue tenantKey1OtherTenant = tenantApi.getPluginPaymentStateMachineConfig(PLUGIN_NAME, requestOptionsOtherTenant);
         Assert.assertEquals(tenantKey1OtherTenant.getKey(), TenantKV.TenantKey.PLUGIN_PAYMENT_STATE_MACHINE_.toString() + PLUGIN_NAME);
         Assert.assertEquals(tenantKey1OtherTenant.getValues().size(), 1);
 
@@ -100,21 +99,22 @@ public class TestTenantKV extends TestJaxrsBase {
         final Payment paymentOtherTenant = createComboPaymentTransaction(requestOptionsOtherTenant);
 
         // Void in the first tenant (allowed by the default state machine)
-        final Payment voidPayment = killBillClient.voidPayment(payment.getPaymentId(), payment.getPaymentExternalKey(), UUID.randomUUID().toString(), ImmutableList.<String>of(), ImmutableMap.<String, String>of(), requestOptions);
-        Assert.assertEquals(voidPayment.getTransactions().get(0).getStatus(), TransactionStatus.SUCCESS.toString());
-        Assert.assertEquals(voidPayment.getTransactions().get(1).getStatus(), TransactionStatus.SUCCESS.toString());
+        paymentApi.voidPayment(new PaymentTransaction(), payment.getPaymentId(), NULL_PLUGIN_NAMES, NULL_PLUGIN_PROPERTIES, requestOptions);
+        final Payment voidPayment = paymentApi.getPayment(payment.getPaymentId(), NULL_PLUGIN_PROPERTIES, requestOptions);
+        Assert.assertEquals(voidPayment.getTransactions().get(0).getStatus(), TransactionStatus.SUCCESS);
+        Assert.assertEquals(voidPayment.getTransactions().get(1).getStatus(), TransactionStatus.SUCCESS);
 
         // Void in the other tenant (disallowed)
         try {
-            killBillClient.voidPayment(paymentOtherTenant.getPaymentId(), paymentOtherTenant.getPaymentExternalKey(), UUID.randomUUID().toString(), ImmutableList.<String>of(), ImmutableMap.<String, String>of(), requestOptionsOtherTenant);
+            paymentApi.voidPayment(new PaymentTransaction(), paymentOtherTenant.getPaymentId(), NULL_PLUGIN_NAMES, NULL_PLUGIN_PROPERTIES, requestOptionsOtherTenant);
             Assert.fail();
         } catch (final KillBillClientException e) {
             Assert.assertEquals((int) e.getBillingException().getCode(), ErrorCode.PAYMENT_INVALID_OPERATION.getCode());
         }
 
         // Remove the custom state machine
-        killBillClient.unregisterPluginPaymentStateMachineConfigurationForTenant(PLUGIN_NAME, requestOptionsOtherTenant);
-        final TenantKey tenantKey2 = killBillClient.getPluginPaymentStateMachineConfigurationForTenant(PLUGIN_NAME, requestOptionsOtherTenant);
+        tenantApi.deletePluginPaymentStateMachineConfig(PLUGIN_NAME, requestOptionsOtherTenant);
+        final TenantKeyValue tenantKey2 = tenantApi.getPluginPaymentStateMachineConfig(PLUGIN_NAME, requestOptionsOtherTenant);
         Assert.assertEquals(tenantKey2.getKey(), TenantKV.TenantKey.PLUGIN_PAYMENT_STATE_MACHINE_.toString() + PLUGIN_NAME);
         Assert.assertEquals(tenantKey2.getValues().size(), 0);
 
@@ -127,7 +127,8 @@ public class TestTenantKV extends TestJaxrsBase {
                       public Boolean call() throws Exception {
                           // The void should now go through
                           try {
-                              final Payment voidPaymentOtherTenant2 = killBillClient.voidPayment(paymentOtherTenant.getPaymentId(), paymentOtherTenant.getPaymentExternalKey(), UUID.randomUUID().toString(), ImmutableList.<String>of(), ImmutableMap.<String, String>of(), requestOptionsOtherTenant);
+                              paymentApi.voidPayment(new PaymentTransaction(), paymentOtherTenant.getPaymentId(), NULL_PLUGIN_NAMES, NULL_PLUGIN_PROPERTIES, requestOptionsOtherTenant);
+                              final Payment voidPaymentOtherTenant2 = paymentApi.getPayment(paymentOtherTenant.getPaymentId(), NULL_PLUGIN_PROPERTIES, requestOptionsOtherTenant);
                               voidPaymentOtherTenant2Ref.set(voidPaymentOtherTenant2);
                               return voidPaymentOtherTenant2 != null;
                           } catch (final KillBillClientException e) {
@@ -136,8 +137,8 @@ public class TestTenantKV extends TestJaxrsBase {
                           }
                       }
                   });
-        Assert.assertEquals(voidPaymentOtherTenant2Ref.get().getTransactions().get(0).getStatus(), TransactionStatus.SUCCESS.toString());
-        Assert.assertEquals(voidPaymentOtherTenant2Ref.get().getTransactions().get(1).getStatus(), TransactionStatus.SUCCESS.toString());
+        Assert.assertEquals(voidPaymentOtherTenant2Ref.get().getTransactions().get(0).getStatus(), TransactionStatus.SUCCESS);
+        Assert.assertEquals(voidPaymentOtherTenant2Ref.get().getTransactions().get(1).getStatus(), TransactionStatus.SUCCESS);
     }
 
     private Payment createComboPaymentTransaction(final RequestOptions requestOptions) throws KillBillClientException {
@@ -148,7 +149,7 @@ public class TestTenantKV extends TestJaxrsBase {
         info.setProperties(null);
 
         final String paymentMethodExternalKey = UUID.randomUUID().toString();
-        final PaymentMethod paymentMethodJson = new PaymentMethod(null, paymentMethodExternalKey, null, true, PLUGIN_NAME, info);
+        final PaymentMethod paymentMethodJson = new PaymentMethod(null, paymentMethodExternalKey, null, true, PLUGIN_NAME, info, null);
 
         final String authTransactionExternalKey = UUID.randomUUID().toString();
         final PaymentTransaction authTransactionJson = new PaymentTransaction();
@@ -156,11 +157,11 @@ public class TestTenantKV extends TestJaxrsBase {
         authTransactionJson.setCurrency(accountJson.getCurrency());
         authTransactionJson.setPaymentExternalKey(UUID.randomUUID().toString());
         authTransactionJson.setTransactionExternalKey(authTransactionExternalKey);
-        authTransactionJson.setTransactionType("AUTHORIZE");
+        authTransactionJson.setTransactionType(TransactionType.AUTHORIZE);
 
-        final ComboPaymentTransaction comboAuthorization = new ComboPaymentTransaction(accountJson, paymentMethodJson, authTransactionJson, ImmutableList.<PluginProperty>of(), ImmutableList.<PluginProperty>of());
-        final Payment payment = killBillClient.createPayment(comboAuthorization, ImmutableMap.<String, String>of(), requestOptions);
-        Assert.assertEquals(payment.getTransactions().get(0).getStatus(), TransactionStatus.SUCCESS.toString());
+        final ComboPaymentTransaction comboAuthorization = new ComboPaymentTransaction(accountJson, paymentMethodJson, authTransactionJson, ImmutableList.<PluginProperty>of(), ImmutableList.<PluginProperty>of(), null);
+        final Payment payment = paymentApi.createComboPayment(comboAuthorization, NULL_PLUGIN_NAMES, requestOptions);
+        Assert.assertEquals(payment.getTransactions().get(0).getStatus(), TransactionStatus.SUCCESS);
 
         return payment;
     }
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/server/security/TestTenantFilter.java b/profiles/killbill/src/test/java/org/killbill/billing/server/security/TestTenantFilter.java
index fdc95ce..900364f 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/server/security/TestTenantFilter.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/server/security/TestTenantFilter.java
@@ -21,8 +21,8 @@ package org.killbill.billing.server.security;
 import javax.ws.rs.core.Response.Status;
 
 import org.killbill.billing.client.KillBillClientException;
-import org.killbill.billing.client.model.Account;
-import org.killbill.billing.client.model.Tenant;
+import org.killbill.billing.client.model.gen.Account;
+import org.killbill.billing.client.model.gen.Tenant;
 import org.killbill.billing.jaxrs.TestJaxrsBase;
 import org.testng.Assert;
 import org.testng.annotations.AfterMethod;
@@ -41,7 +41,7 @@ public class TestTenantFilter extends TestJaxrsBase {
         // Try to create an account without being logged-in
         logoutTenant();
         try {
-            killBillClient.createAccount(getAccount(), createdBy, reason, comment);
+            accountApi.createAccount(getAccount(), requestOptions);
             Assert.fail();
         } catch (final KillBillClientException e) {
             Assert.assertEquals(e.getResponse().getStatusCode(), Status.UNAUTHORIZED.getStatusCode());
@@ -54,10 +54,10 @@ public class TestTenantFilter extends TestJaxrsBase {
         final Tenant tenant1 = new Tenant();
         tenant1.setApiKey(apiKeyTenant1);
         tenant1.setApiSecret(apiSecretTenant1);
-        killBillClient.createTenant(tenant1, createdBy, reason, comment);
+        tenantApi.createTenant(tenant1, requestOptions);
 
         final Account account1 = createAccount();
-        Assert.assertEquals(killBillClient.getAccount(account1.getExternalKey()), account1);
+        Assert.assertEquals(accountApi.getAccountByKey(account1.getExternalKey(), requestOptions), account1);
 
         logoutTenant();
 
@@ -68,16 +68,16 @@ public class TestTenantFilter extends TestJaxrsBase {
         final Tenant tenant2 = new Tenant();
         tenant2.setApiKey(apiKeyTenant2);
         tenant2.setApiSecret(apiSecretTenant2);
-        killBillClient.createTenant(tenant2, createdBy, reason, comment);
+        tenantApi.createTenant(tenant2, requestOptions);
 
         final Account account2 = createAccount();
-        Assert.assertEquals(killBillClient.getAccount(account2.getExternalKey()), account2);
+        Assert.assertEquals(accountApi.getAccountByKey(account2.getExternalKey(), requestOptions), account2);
 
         // We should not be able to retrieve the first account as tenant2
-        Assert.assertNull(killBillClient.getAccount(account1.getExternalKey()));
+        Assert.assertNull(accountApi.getAccountByKey(account1.getExternalKey(), requestOptions));
 
         // Same for tenant1 and account2
         loginTenant(apiKeyTenant1, apiSecretTenant1);
-        Assert.assertNull(killBillClient.getAccount(account2.getExternalKey()));
+        Assert.assertNull(accountApi.getAccountByKey(account2.getExternalKey(), requestOptions));
     }
 }