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 54b4d34..66438a3 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
@@ -230,6 +230,9 @@ public class AccountResource extends JaxRsResourceBase {
@GET
@Path("/{accountId:" + UUID_PATTERN + "}/" + BUNDLES)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve bundles for account", response = BundleJson.class, responseContainer = "List")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public Response getAccountBundles(@PathParam("accountId") final String accountId,
@QueryParam(QUERY_EXTERNAL_KEY) final String externalKey,
@javax.ws.rs.core.Context final HttpServletRequest request) throws AccountApiException, SubscriptionApiException {
@@ -286,6 +289,8 @@ public class AccountResource extends JaxRsResourceBase {
@POST
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Create account")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account data supplied")})
public Response createAccount(final AccountJson json,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@HeaderParam(HDR_REASON) final String reason,
@@ -302,6 +307,8 @@ public class AccountResource extends JaxRsResourceBase {
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
@Path("/{accountId:" + UUID_PATTERN + "}")
+ @ApiOperation(value = "Update account")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account data supplied")})
public Response updateAccount(final AccountJson json,
@PathParam("accountId") final String accountId,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@@ -319,6 +326,8 @@ public class AccountResource extends JaxRsResourceBase {
@DELETE
@Path("/{accountId:" + UUID_PATTERN + "}")
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Delete account", hidden = true)
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied")})
public Response cancelAccount(@PathParam("accountId") final String accountId,
@javax.ws.rs.core.Context final HttpServletRequest request) {
/*
@@ -337,6 +346,9 @@ public class AccountResource extends JaxRsResourceBase {
@GET
@Path("/{accountId:" + UUID_PATTERN + "}/" + TIMELINE)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve account timeline", response = AccountTimelineJson.class)
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public Response getAccountTimeline(@PathParam("accountId") final String accountIdString,
@QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
@javax.ws.rs.core.Context final HttpServletRequest request) throws AccountApiException, PaymentApiException, SubscriptionApiException {
@@ -371,6 +383,9 @@ public class AccountResource extends JaxRsResourceBase {
@GET
@Path("/{accountId:" + UUID_PATTERN + "}/" + EMAIL_NOTIFICATIONS)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve account email notification", response = InvoiceEmailJson.class)
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public Response getEmailNotificationsForAccount(@PathParam("accountId") final String accountId,
@javax.ws.rs.core.Context final HttpServletRequest request) throws AccountApiException {
final Account account = accountUserApi.getAccountById(UUID.fromString(accountId), context.createContext(request));
@@ -384,7 +399,10 @@ public class AccountResource extends JaxRsResourceBase {
@Path("/{accountId:" + UUID_PATTERN + "}/" + EMAIL_NOTIFICATIONS)
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
- public Response getEmailNotificationsForAccount(final InvoiceEmailJson json,
+ @ApiOperation(value = "Set account email notification")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
+ public Response setEmailNotificationsForAccount(final InvoiceEmailJson json,
@PathParam("accountId") final String accountIdString,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@HeaderParam(HDR_REASON) final String reason,
@@ -410,6 +428,8 @@ public class AccountResource extends JaxRsResourceBase {
@Path("/{accountId:" + UUID_PATTERN + "}/" + CBA_REBALANCING)
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Rebalance account CBA")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied")})
public Response rebalanceExistingCBAOnAccount(@PathParam("accountId") final String accountIdString,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@HeaderParam(HDR_REASON) final String reason,
@@ -432,6 +452,9 @@ public class AccountResource extends JaxRsResourceBase {
@GET
@Path("/{accountId:" + UUID_PATTERN + "}/" + INVOICES)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve account invoices", response = InvoiceJson.class)
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public Response getInvoices(@PathParam("accountId") final String accountIdString,
@QueryParam(QUERY_INVOICE_WITH_ITEMS) @DefaultValue("false") final boolean withItems,
@QueryParam(QUERY_UNPAID_INVOICES_ONLY) @DefaultValue("false") final boolean unpaidInvoicesOnly,
@@ -466,6 +489,9 @@ public class AccountResource extends JaxRsResourceBase {
@GET
@Path("/{accountId:" + UUID_PATTERN + "}/" + INVOICE_PAYMENTS)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve account invoice payments", response = InvoicePaymentJson.class, responseContainer = "List")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public Response getInvoicePayments(@PathParam("accountId") final String accountIdStr,
@QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
@QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
@@ -491,6 +517,9 @@ public class AccountResource extends JaxRsResourceBase {
@Produces(APPLICATION_JSON)
@Consumes(APPLICATION_JSON)
@Path("/{accountId:" + UUID_PATTERN + "}/" + INVOICE_PAYMENTS)
+ @ApiOperation(value = "Trigger a payment for all unpaid invoices")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public Response payAllInvoices(@PathParam("accountId") final String accountId,
@QueryParam(QUERY_PAYMENT_EXTERNAL) @DefaultValue("false") final Boolean externalPayment,
@QueryParam(QUERY_PAYMENT_AMOUNT) final BigDecimal paymentAmount,
@@ -539,6 +568,9 @@ public class AccountResource extends JaxRsResourceBase {
@Path("/{accountId:" + UUID_PATTERN + "}/" + PAYMENT_METHODS)
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Add a payment method")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public Response createPaymentMethod(final PaymentMethodJson json,
@PathParam("accountId") final String accountId,
@QueryParam(QUERY_PAYMENT_METHOD_IS_DEFAULT) @DefaultValue("false") final Boolean isDefault,
@@ -575,6 +607,9 @@ public class AccountResource extends JaxRsResourceBase {
@GET
@Path("/{accountId:" + UUID_PATTERN + "}/" + PAYMENT_METHODS)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve account payment methods", response = PaymentMethodJson.class, responseContainer = "List")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public Response getPaymentMethods(@PathParam("accountId") final String accountId,
@QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
@QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
@@ -601,6 +636,9 @@ public class AccountResource extends JaxRsResourceBase {
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
@Path("/{accountId:" + UUID_PATTERN + "}/" + PAYMENT_METHODS + "/{paymentMethodId:" + UUID_PATTERN + "}/" + PAYMENT_METHODS_DEFAULT_PATH_POSTFIX)
+ @ApiOperation(value = "Set the default payment method")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id or payment method id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public Response setDefaultPaymentMethod(@PathParam("accountId") final String accountId,
@PathParam("paymentMethodId") final String paymentMethodId,
@QueryParam(QUERY_PAY_ALL_UNPAID_INVOICES) @DefaultValue("false") final Boolean payAllUnpaidInvoices,
@@ -631,6 +669,8 @@ public class AccountResource extends JaxRsResourceBase {
@GET
@Path("/{accountId:" + UUID_PATTERN + "}/" + PAYMENTS)
@Produces(APPLICATION_JSON)
+ @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 String accountIdStr,
@QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
@QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
@@ -655,6 +695,9 @@ public class AccountResource extends JaxRsResourceBase {
@Path("/{accountId:" + UUID_PATTERN + "}/" + PAYMENTS)
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Trigger a payment (authorization, purchase or credit)")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public Response processPayment(final PaymentTransactionJson json,
@PathParam("accountId") final String accountIdStr,
@QueryParam("paymentMethodId") final String paymentMethodIdStr,
@@ -703,6 +746,9 @@ public class AccountResource extends JaxRsResourceBase {
@GET
@Path("/{accountId:" + UUID_PATTERN + "}/" + OVERDUE)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve overdue state for account", response = OverdueStateJson.class)
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public Response getOverdueAccount(@PathParam("accountId") final String accountId,
@javax.ws.rs.core.Context final HttpServletRequest request) throws AccountApiException, OverdueException, OverdueApiException {
final TenantContext tenantContext = context.createContext(request);
@@ -844,6 +890,8 @@ public class AccountResource extends JaxRsResourceBase {
@GET
@Path("/{accountId:" + UUID_PATTERN + "}/" + EMAILS)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve an account emails", response = AccountEmailJson.class, responseContainer = "List")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied")})
public Response getEmails(@PathParam(ID_PARAM_NAME) final String id,
@javax.ws.rs.core.Context final HttpServletRequest request) {
final UUID accountId = UUID.fromString(id);
@@ -861,6 +909,9 @@ public class AccountResource extends JaxRsResourceBase {
@Path("/{accountId:" + UUID_PATTERN + "}/" + EMAILS)
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Add account email")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public Response addEmail(final AccountEmailJson json,
@PathParam(ID_PARAM_NAME) final String id,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@@ -896,6 +947,8 @@ public class AccountResource extends JaxRsResourceBase {
@DELETE
@Path("/{accountId:" + UUID_PATTERN + "}/" + EMAILS + "/{email}")
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Delete email from account")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied")})
public Response removeEmail(@PathParam(ID_PARAM_NAME) final String id,
@PathParam("email") final String email,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java
index fbc85ab..d4c7311 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java
@@ -32,21 +32,23 @@ import org.killbill.billing.catalog.api.CatalogApiException;
import org.killbill.billing.catalog.api.CatalogService;
import org.killbill.billing.catalog.api.Listing;
import org.killbill.billing.catalog.api.StaticCatalog;
-import org.killbill.billing.payment.api.PaymentApi;
-import org.killbill.clock.Clock;
import org.killbill.billing.jaxrs.json.CatalogJsonSimple;
import org.killbill.billing.jaxrs.json.PlanDetailJson;
import org.killbill.billing.jaxrs.util.Context;
import org.killbill.billing.jaxrs.util.JaxrsUriBuilder;
+import org.killbill.billing.payment.api.PaymentApi;
import org.killbill.billing.util.api.AuditUserApi;
import org.killbill.billing.util.api.CustomFieldUserApi;
import org.killbill.billing.util.api.TagUserApi;
+import org.killbill.clock.Clock;
import org.killbill.xmlloader.XMLWriter;
import com.codahale.metrics.annotation.Timed;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiResponses;
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
import static javax.ws.rs.core.MediaType.APPLICATION_XML;
@@ -75,6 +77,8 @@ public class CatalogResource extends JaxRsResourceBase {
@Timed
@GET
@Produces(APPLICATION_XML)
+ @ApiOperation(value = "Retrieve the full catalog as XML", response = String.class, hidden = true)
+ @ApiResponses(value = {})
public Response getCatalogXml(@javax.ws.rs.core.Context final HttpServletRequest request) throws Exception {
return Response.status(Status.OK).entity(XMLWriter.writeXML(catalogService.getCurrentCatalog(), StaticCatalog.class)).build();
}
@@ -82,6 +86,8 @@ public class CatalogResource extends JaxRsResourceBase {
@Timed
@GET
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve the full catalog as JSON", response = StaticCatalog.class)
+ @ApiResponses(value = {})
public Response getCatalogJson(@javax.ws.rs.core.Context final HttpServletRequest request) throws Exception {
final StaticCatalog catalog = catalogService.getCurrentCatalog();
@@ -106,6 +112,8 @@ public class CatalogResource extends JaxRsResourceBase {
@GET
@Path("/availableAddons")
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve available add-ons for a given product", response = PlanDetailJson.class, responseContainer = "List")
+ @ApiResponses(value = {})
public Response getAvailableAddons(@QueryParam("baseProductName") final String baseProductName,
@javax.ws.rs.core.Context final HttpServletRequest request) throws CatalogApiException {
final StaticCatalog catalog = catalogService.getCurrentCatalog();
@@ -121,6 +129,8 @@ public class CatalogResource extends JaxRsResourceBase {
@GET
@Path("/availableBasePlans")
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve available base plans", response = PlanDetailJson.class, responseContainer = "List")
+ @ApiResponses(value = {})
public Response getAvailableBasePlans(@javax.ws.rs.core.Context final HttpServletRequest request) throws CatalogApiException {
final StaticCatalog catalog = catalogService.getCurrentCatalog();
final List<Listing> listings = catalog.getAvailableBasePlanListings();
@@ -135,6 +145,8 @@ public class CatalogResource extends JaxRsResourceBase {
@GET
@Path("/simpleCatalog")
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve a summarized version of the catalog as JSON", response = CatalogJsonSimple.class)
+ @ApiResponses(value = {})
public Response getSimpleCatalog(@javax.ws.rs.core.Context final HttpServletRequest request) throws CatalogApiException {
final StaticCatalog catalog = catalogService.getCurrentCatalog();
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CreditResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CreditResource.java
index 1ea0c3f..d292613 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CreditResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CreditResource.java
@@ -30,13 +30,10 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import org.joda.time.LocalDate;
-
import org.killbill.billing.ObjectType;
import org.killbill.billing.account.api.Account;
import org.killbill.billing.account.api.AccountApiException;
import org.killbill.billing.account.api.AccountUserApi;
-import org.killbill.billing.payment.api.PaymentApi;
-import org.killbill.clock.Clock;
import org.killbill.billing.invoice.api.Invoice;
import org.killbill.billing.invoice.api.InvoiceApiException;
import org.killbill.billing.invoice.api.InvoiceItem;
@@ -44,15 +41,20 @@ import org.killbill.billing.invoice.api.InvoiceUserApi;
import org.killbill.billing.jaxrs.json.CreditJson;
import org.killbill.billing.jaxrs.util.Context;
import org.killbill.billing.jaxrs.util.JaxrsUriBuilder;
+import org.killbill.billing.payment.api.PaymentApi;
import org.killbill.billing.util.api.AuditUserApi;
import org.killbill.billing.util.api.CustomFieldUserApi;
import org.killbill.billing.util.api.TagUserApi;
import org.killbill.billing.util.callcontext.CallContext;
import org.killbill.billing.util.callcontext.TenantContext;
+import org.killbill.clock.Clock;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiResponse;
+import com.wordnik.swagger.annotations.ApiResponses;
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
@@ -82,6 +84,9 @@ public class CreditResource extends JaxRsResourceBase {
@GET
@Path("/{creditId:" + UUID_PATTERN + "}")
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve a credit by id", response = CreditJson.class)
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid credit id supplied"),
+ @ApiResponse(code = 404, message = "Credit not found")})
public Response getCredit(@PathParam("creditId") final String creditId,
@javax.ws.rs.core.Context final HttpServletRequest request) throws InvoiceApiException, AccountApiException {
final TenantContext tenantContext = context.createContext(request);
@@ -94,6 +99,9 @@ public class CreditResource extends JaxRsResourceBase {
@POST
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Create a credit")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public Response createCredit(final CreditJson json,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@HeaderParam(HDR_REASON) final String reason,
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CustomFieldResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CustomFieldResource.java
index 50d3ec7..58f5bf9 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CustomFieldResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CustomFieldResource.java
@@ -30,11 +30,10 @@ import javax.ws.rs.core.Response;
import org.killbill.billing.ObjectType;
import org.killbill.billing.account.api.AccountUserApi;
-import org.killbill.billing.payment.api.PaymentApi;
-import org.killbill.clock.Clock;
import org.killbill.billing.jaxrs.json.CustomFieldJson;
import org.killbill.billing.jaxrs.util.Context;
import org.killbill.billing.jaxrs.util.JaxrsUriBuilder;
+import org.killbill.billing.payment.api.PaymentApi;
import org.killbill.billing.util.api.AuditUserApi;
import org.killbill.billing.util.api.CustomFieldApiException;
import org.killbill.billing.util.api.CustomFieldUserApi;
@@ -43,6 +42,7 @@ import org.killbill.billing.util.audit.AuditLog;
import org.killbill.billing.util.callcontext.TenantContext;
import org.killbill.billing.util.customfield.CustomField;
import org.killbill.billing.util.entity.Pagination;
+import org.killbill.clock.Clock;
import com.codahale.metrics.annotation.Timed;
import com.google.common.base.Function;
@@ -50,6 +50,8 @@ import com.google.common.collect.ImmutableMap;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiResponses;
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
@@ -74,6 +76,8 @@ public class CustomFieldResource extends JaxRsResourceBase {
@GET
@Path("/" + PAGINATION)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "List custom fields", response = CustomFieldJson.class, responseContainer = "List")
+ @ApiResponses(value = {})
public Response getCustomFields(@QueryParam(QUERY_SEARCH_OFFSET) @DefaultValue("0") final Long offset,
@QueryParam(QUERY_SEARCH_LIMIT) @DefaultValue("100") final Long limit,
@QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
@@ -98,6 +102,8 @@ public class CustomFieldResource extends JaxRsResourceBase {
@GET
@Path("/" + SEARCH + "/{searchKey:" + ANYTHING_PATTERN + "}")
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Search custom fields", response = CustomFieldJson.class, responseContainer = "List")
+ @ApiResponses(value = {})
public Response searchCustomFields(@PathParam("searchKey") final String searchKey,
@QueryParam(QUERY_SEARCH_OFFSET) @DefaultValue("0") final Long offset,
@QueryParam(QUERY_SEARCH_LIMIT) @DefaultValue("100") final Long limit,
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ExportResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ExportResource.java
index 0dc4810..50be28e 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ExportResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ExportResource.java
@@ -31,19 +31,22 @@ import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.StreamingOutput;
import org.killbill.billing.account.api.AccountUserApi;
-import org.killbill.billing.payment.api.PaymentApi;
-import org.killbill.clock.Clock;
import org.killbill.billing.jaxrs.util.Context;
import org.killbill.billing.jaxrs.util.JaxrsUriBuilder;
+import org.killbill.billing.payment.api.PaymentApi;
import org.killbill.billing.util.api.AuditUserApi;
import org.killbill.billing.util.api.CustomFieldUserApi;
import org.killbill.billing.util.api.ExportUserApi;
import org.killbill.billing.util.api.TagUserApi;
import org.killbill.billing.util.callcontext.CallContext;
+import org.killbill.clock.Clock;
import com.codahale.metrics.annotation.Timed;
import com.google.inject.Singleton;
import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiResponse;
+import com.wordnik.swagger.annotations.ApiResponses;
import static javax.ws.rs.core.MediaType.TEXT_PLAIN;
@@ -72,6 +75,9 @@ public class ExportResource extends JaxRsResourceBase {
@GET
@Path("/{accountId:" + UUID_PATTERN + "}")
@Produces(TEXT_PLAIN)
+ @ApiOperation(value = "Export account data", response = String.class)
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public StreamingOutput exportDataForAccount(@PathParam("accountId") final String accountId,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@HeaderParam(HDR_REASON) final String reason,
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 23faa8e..263b537 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
@@ -105,6 +105,9 @@ public class InvoicePaymentResource extends JaxRsResourceBase {
@GET
@Path("/{paymentId:" + UUID_PATTERN + "}/")
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve a payment by id", response = InvoicePaymentJson.class)
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid payment id supplied"),
+ @ApiResponse(code = 404, message = "Payment not found")})
public Response getInvoicePayment(@PathParam("paymentId") final String paymentIdStr,
@QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
@QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
@@ -135,6 +138,9 @@ public class InvoicePaymentResource extends JaxRsResourceBase {
@Path("/{paymentId:" + UUID_PATTERN + "}/" + REFUNDS)
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Refund a payment, and adjust the invoice if needed")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid payment id supplied"),
+ @ApiResponse(code = 404, message = "Account or payment not found")})
public Response createRefundWithAdjustments(final InvoicePaymentTransactionJson json,
@PathParam("paymentId") final String paymentId,
@QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
@@ -178,6 +184,9 @@ public class InvoicePaymentResource extends JaxRsResourceBase {
@Path("/{paymentId:" + UUID_PATTERN + "}/" + CHARGEBACKS)
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Record a chargeback")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid payment id supplied"),
+ @ApiResponse(code = 404, message = "Account or payment not found")})
public Response createChargeback(final InvoicePaymentTransactionJson json,
@PathParam("paymentId") final String paymentId,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
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 a3177eb..c79c048 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
@@ -174,6 +174,8 @@ public class InvoiceResource extends JaxRsResourceBase {
@GET
@Path("/{invoiceId:" + UUID_PATTERN + "}/html")
@Produces(TEXT_HTML)
+ @ApiOperation(value = "Render an invoice as HTML", response = String.class)
+ @ApiResponses(value = {@ApiResponse(code = 404, message = "Invoice not found")})
public Response getInvoiceAsHTML(@PathParam("invoiceId") final String invoiceId,
@javax.ws.rs.core.Context final HttpServletRequest request) throws InvoiceApiException, IOException, AccountApiException {
return Response.status(Status.OK).entity(invoiceApi.getInvoiceAsHTML(UUID.fromString(invoiceId), context.createContext(request))).build();
@@ -248,6 +250,8 @@ public class InvoiceResource extends JaxRsResourceBase {
@POST
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Trigger an invoice generation", response = InvoiceJson.class)
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id or target datetime supplied")})
public Response createFutureInvoice(@QueryParam(QUERY_ACCOUNT_ID) final String accountId,
@QueryParam(QUERY_TARGET_DATE) final String targetDateTime,
@QueryParam(QUERY_DRY_RUN) @DefaultValue("false") final Boolean dryRun,
@@ -273,6 +277,9 @@ public class InvoiceResource extends JaxRsResourceBase {
@Path("/{invoiceId:" + UUID_PATTERN + "}" + "/{invoiceItemId:" + UUID_PATTERN + "}/cba")
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Delete a CBA item")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id, invoice id or invoice item id supplied"),
+ @ApiResponse(code = 404, message = "Account or invoice not found")})
public Response deleteCBA(@PathParam("invoiceId") final String invoiceId,
@PathParam("invoiceItemId") final String invoiceItemId,
@QueryParam(QUERY_ACCOUNT_ID) final String accountId,
@@ -294,6 +301,9 @@ public class InvoiceResource extends JaxRsResourceBase {
@Path("/{invoiceId:" + UUID_PATTERN + "}")
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Adjust an invoice item")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id, invoice id or invoice item id supplied"),
+ @ApiResponse(code = 404, message = "Invoice not found")})
public Response adjustInvoiceItem(final InvoiceItemJson json,
@PathParam("invoiceId") final String invoiceId,
@QueryParam(QUERY_REQUESTED_DT) final String requestedDateTimeString,
@@ -331,6 +341,9 @@ public class InvoiceResource extends JaxRsResourceBase {
@Produces(APPLICATION_JSON)
@Consumes(APPLICATION_JSON)
@Path("/" + CHARGES + "/{accountId:" + UUID_PATTERN + "}")
+ @ApiOperation(value = "Create external charge(s)",response = InvoiceItemJson.class, responseContainer = "List")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public Response createExternalCharges(final Iterable<InvoiceItemJson> externalChargesJson,
@PathParam("accountId") final String accountId,
@QueryParam(QUERY_REQUESTED_DT) final String requestedDateTimeString,
@@ -399,6 +412,9 @@ public class InvoiceResource extends JaxRsResourceBase {
@GET
@Path("/{invoiceId:" + UUID_PATTERN + "}/" + PAYMENTS)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve payments associated with an invoice", response = InvoicePaymentJson.class, responseContainer = "List")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid invoice id supplied"),
+ @ApiResponse(code = 404, message = "Invoice not found")})
public Response getPayments(@PathParam("invoiceId") final String invoiceId,
@QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
@QueryParam(QUERY_WITH_PLUGIN_INFO) @DefaultValue("false") final Boolean withPluginInfo,
@@ -426,6 +442,9 @@ public class InvoiceResource extends JaxRsResourceBase {
@Produces(APPLICATION_JSON)
@Consumes(APPLICATION_JSON)
@Path("/{invoiceId:" + UUID_PATTERN + "}/" + PAYMENTS)
+ @ApiOperation(value = "Trigger a payment for invoice")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id or invoice id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
public Response createInstantPayment(final InvoicePaymentJson payment,
@QueryParam(QUERY_PAYMENT_EXTERNAL) @DefaultValue("false") final Boolean externalPayment,
@QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
@@ -449,6 +468,9 @@ public class InvoiceResource extends JaxRsResourceBase {
@Path("/{invoiceId:" + UUID_PATTERN + "}/" + EMAIL_NOTIFICATIONS)
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Trigger an email notification for invoice")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid invoice id supplied"),
+ @ApiResponse(code = 404, message = "Account or invoice not found")})
public Response triggerEmailNotificationForInvoice(@PathParam("invoiceId") final String invoiceId,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@HeaderParam(HDR_REASON) final String reason,
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java
index c2e9379..db47697 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java
@@ -135,6 +135,8 @@ public class SubscriptionResource extends JaxRsResourceBase {
@POST
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Create an entitlement")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid entitlement supplied")})
public Response createEntitlement(final SubscriptionJson entitlement,
@QueryParam(QUERY_REQUESTED_DT) final String requestedDate,
@QueryParam(QUERY_CALL_COMPLETION) @DefaultValue("false") final Boolean callCompletion,
@@ -180,6 +182,9 @@ public class SubscriptionResource extends JaxRsResourceBase {
@PUT
@Path("/{subscriptionId:" + UUID_PATTERN + "}/uncancel")
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Un-cancel an entitlement")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid subscription id supplied"),
+ @ApiResponse(code = 404, message = "Entitlement not found")})
public Response uncancelEntitlementPlan(@PathParam("subscriptionId") final String subscriptionId,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@HeaderParam(HDR_REASON) final String reason,
@@ -196,6 +201,9 @@ public class SubscriptionResource extends JaxRsResourceBase {
@Produces(APPLICATION_JSON)
@Consumes(APPLICATION_JSON)
@Path("/{subscriptionId:" + UUID_PATTERN + "}")
+ @ApiOperation(value = "Change entitlement plan")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid subscription id supplied"),
+ @ApiResponse(code = 404, message = "Entitlement not found")})
public Response changeEntitlementPlan(final SubscriptionJson entitlement,
@PathParam("subscriptionId") final String subscriptionId,
@QueryParam(QUERY_REQUESTED_DT) final String requestedDate,
@@ -256,6 +264,9 @@ public class SubscriptionResource extends JaxRsResourceBase {
@DELETE
@Path("/{subscriptionId:" + UUID_PATTERN + "}")
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Cancel an entitlement plan")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid subscription id supplied"),
+ @ApiResponse(code = 404, message = "Entitlement not found")})
public Response cancelEntitlementPlan(@PathParam("subscriptionId") final String subscriptionId,
@QueryParam(QUERY_REQUESTED_DT) final String requestedDate,
@QueryParam(QUERY_CALL_COMPLETION) @DefaultValue("false") final Boolean callCompletion,
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TestResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TestResource.java
index d8f74e6..2801eed 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TestResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TestResource.java
@@ -56,6 +56,9 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiResponse;
+import com.wordnik.swagger.annotations.ApiResponses;
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
@@ -120,6 +123,8 @@ public class TestResource extends JaxRsResourceBase {
@GET
@Path("/clock")
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Get the current time", response = ClockResource.class)
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid timezone supplied")})
public Response getCurrentTime(@QueryParam("timeZone") final String timeZoneStr) {
final DateTimeZone timeZone = timeZoneStr != null ? DateTimeZone.forID(timeZoneStr) : DateTimeZone.UTC;
final DateTime now = clock.getUTCNow();
@@ -130,6 +135,8 @@ public class TestResource extends JaxRsResourceBase {
@POST
@Path("/clock")
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Set the current time", response = ClockResource.class)
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid time or timezone supplied")})
public Response setTestClockTime(@QueryParam(QUERY_REQUESTED_DT) final String requestedClockDate,
@QueryParam("timeZone") final String timeZoneStr,
@QueryParam("timeoutSec") @DefaultValue("5") final Long timeoutSec,
@@ -152,6 +159,8 @@ public class TestResource extends JaxRsResourceBase {
@PUT
@Path("/clock")
@Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Move the current time", response = ClockResource.class)
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid timezone supplied")})
public Response updateTestClockTime(@QueryParam("days") final Integer addDays,
@QueryParam("weeks") final Integer addWeeks,
@QueryParam("months") final Integer addMonths,