All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.electrum.cardaccount.api.CardAccountApiResource Maven / Gradle / Ivy

The newest version!
package io.electrum.cardaccount.api;

import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.container.AsyncResponse;
import javax.ws.rs.container.Suspended;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.SecurityContext;
import javax.ws.rs.core.UriInfo;

import io.electrum.cardaccount.model.AccountBalanceResponse;
import io.electrum.cardaccount.model.AccountCreditRequest;
import io.electrum.cardaccount.model.AccountCreditResponse;
import io.electrum.cardaccount.model.AccountDebitRequest;
import io.electrum.cardaccount.model.AccountDebitResponse;
import io.electrum.cardaccount.model.AccountStatementResponse;
import io.electrum.cardaccount.model.ApplyAccountFeesRequest;
import io.electrum.cardaccount.model.ApplyAccountFeesResponse;
import io.electrum.cardaccount.model.ApplyCardFeesRequest;
import io.electrum.cardaccount.model.ApplyCardFeesResponse;
import io.electrum.cardaccount.model.CancelStopCardRequest;
import io.electrum.cardaccount.model.CancelStopCardResponse;
import io.electrum.cardaccount.model.CardAccountLinkRequest;
import io.electrum.cardaccount.model.CardAccountLinkResponse;
import io.electrum.cardaccount.model.CardBalanceResponse;
import io.electrum.cardaccount.model.MultipleCardsIssuerLinkRequest;
import io.electrum.cardaccount.model.MultipleCardsIssuerLinkResponse;
import io.electrum.cardaccount.model.ErrorDetail;
import io.electrum.cardaccount.model.FundsTransferRequest;
import io.electrum.cardaccount.model.FundsTransferResponse;
import io.electrum.cardaccount.model.PinResetRequest;
import io.electrum.cardaccount.model.PinResetResponse;
import io.electrum.cardaccount.model.SingleCardIssuerLinkRequest;
import io.electrum.cardaccount.model.StopCardRequest;
import io.electrum.cardaccount.model.StopCardResponse;
import io.electrum.cardaccount.model.UpdateCustomerRequest;
import io.electrum.cardaccount.model.UpdateCustomerResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;

@Path("/cardAccount/v1")
@Api(description = "The Gateway Card-Account API", authorizations = { @Authorization("httpBasic") })
public abstract class CardAccountApiResource {

   public abstract ICardAccountApiResource getResourceImplementation();

   @POST
   @Path("/issuers/{issuer-id}/accounts/{account-id}/fees/{transaction-id}")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Apply fees to an account.")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Fees applied successfully.", response = ApplyAccountFeesResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or account not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout.", response = ErrorDetail.class) })
   public final void applyAccountFees(
         @ApiParam(value = "The issuer ID to which the account belongs.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The account ID to which the fees apply.", required = true) @PathParam("account-id") String accountId,
         @ApiParam(value = "The randomly generated UUID identifying this transaction, as  defined for a version 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)", required = true) @PathParam("transaction-id") String transactionId,
         @ApiParam(value = "Details regarding the fees to be applied.", required = true) ApplyAccountFeesRequest body,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().applyAccountFees(
            issuerId,
            accountId,
            transactionId,
            body,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }

   @POST
   @Path("/issuers/{issuer-id}/cards/{card-id}/fees/{transaction-id}")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Apply fees to a card.")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Fees applied successfully.", response = ApplyCardFeesResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or account not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout.", response = ErrorDetail.class) })
   public final void applyCardFees(
         @ApiParam(value = "The issuer ID to which the account belongs.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The card ID to which the fees apply.", required = true) @PathParam("card-id") String cardId,
         @ApiParam(value = "The randomly generated UUID identifying this transaction, as  defined for a version 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)", required = true) @PathParam("transaction-id") String transactionId,
         @ApiParam(value = "Details regarding the fees to be applied.", required = true) ApplyCardFeesRequest body,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().applyCardFees(
            issuerId,
            cardId,
            transactionId,
            body,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }

   @PUT
   @Path("/issuers/{issuer-id}/cards/{card-id}/cancelstop/{transaction-id}")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Remove a cards hold status.")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Card hold status removed.", response = CancelStopCardResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or card not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout", response = ErrorDetail.class) })
   public final void cancelStopCard(
         @ApiParam(value = "The issuer ID to which the card belongs.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The card ID.", required = true) @PathParam("card-id") String cardId,
         @ApiParam(value = "The randomly generated UUID identifying this transaction, as  defined for a version 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)", required = true) @PathParam("transaction-id") String transactionId,
         @ApiParam(value = "Details for removing the hold status.", required = true) CancelStopCardRequest body,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().cancelStopCard(
            issuerId,
            cardId,
            transactionId,
            body,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }

   @POST
   @Path("/issuers/{issuer-id}/accounts/{account-id}/credit/{transaction-id}")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Credit an account with funds.")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Account credit successful.", response = AccountCreditResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or account not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout", response = ErrorDetail.class) })
   public final void creditAccount(
         @ApiParam(value = "The issuer ID to which the account belongs.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The account ID of the account to credit.", required = true) @PathParam("account-id") String accountId,
         @ApiParam(value = "The randomly generated UUID identifying this transaction, as  defined for a version 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)", required = true) @PathParam("transaction-id") String transactionId,
         @ApiParam(value = "Details regarding the funds to be credited.", required = true) AccountCreditRequest body,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().creditAccount(
            issuerId,
            accountId,
            transactionId,
            body,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }

   @POST
   @Path("/issuers/{issuer-id}/accounts/{account-id}/debit/{transaction-id}")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Debit funds from an account.")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Account debit successful", response = AccountDebitResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or account not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout", response = ErrorDetail.class) })
   public final void debitAccount(
         @ApiParam(value = "The issuer ID to which the account belongs.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The account ID of the account to debit.", required = true) @PathParam("account-id") String accountId,
         @ApiParam(value = "The randomly generated UUID identifying this transaction, as  defined for a version 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)", required = true) @PathParam("transaction-id") String transactionId,
         @ApiParam(value = "Details regarding the funds to be debited.", required = true) AccountDebitRequest body,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().debitAccount(
            issuerId,
            accountId,
            transactionId,
            body,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }

   @GET
   @Path("/issuers/{issuer-id}/accounts/{account-id}/balance")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Retrieve the available and or ledger balance of an account.")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Account balance retrieived successfully.", response = AccountBalanceResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or account not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout", response = ErrorDetail.class) })
   public final void getAccountBalance(
         @ApiParam(value = "The issuer ID to which the account belongs.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The account ID.", required = true) @PathParam("account-id") String accountId,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().getAccountBalance(
            issuerId,
            accountId,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }

   @GET
   @Path("/issuers/{issuer-id}/accounts/{account-id}/statement")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Retrieve an account statement for a specified period.")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Statement retrieved successfully.", response = AccountStatementResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or account not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout", response = ErrorDetail.class) })
   public final void getAccountStatementByDate(
         @ApiParam(value = "The issuer ID to which the account belongs.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The account ID for which to get the statement.", required = true) @PathParam("account-id") String accountId,
         @ApiParam(value = "The start date of the statement.") @QueryParam("begin-date") String beginDate,
         @ApiParam(value = "The end date of the statement.") @QueryParam("end-date") String endDate,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().getAccountStatementByDate(
            issuerId,
            accountId,
            beginDate,
            endDate,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }

   @GET
   @Path("/issuers/{issuer-id}/cards/{card-id}/statement")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Retrieve a card statement for a specified period.")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Statement retrieved successfully.", response = AccountStatementResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or card not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout", response = ErrorDetail.class) })
   public final void getCardStatementByDate(
         @ApiParam(value = "The issuer ID to which the card belongs.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The card ID for which to get the statement.", required = true) @PathParam("card-id") String accountId,
         @ApiParam(value = "The start date of the statement.") @QueryParam("begin-date") String beginDate,
         @ApiParam(value = "The end date of the statement.") @QueryParam("end-date") String endDate,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().getCardStatementByDate(
            issuerId,
            accountId,
            beginDate,
            endDate,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }

   @POST
   @Path("/issuers/{issuer-id}/cardaccountlink/{transaction-id}")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Link a card to an account.")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Card and account linked successfully.", response = CardAccountLinkResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or card not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout", response = ErrorDetail.class) })
   public final void linkCardAndAccount(
         @ApiParam(value = "The issuer ID of the issuer that issued the card.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The randomly generated UUID identifying this transaction, as  defined for a version 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)", required = true) @PathParam("transaction-id") String transactionId,
         @ApiParam(value = "The card and account details. The card and account must already exist.", required = true) CardAccountLinkRequest body,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().linkCardAndAccount(
            issuerId,
            transactionId,
            body,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }

   @POST
   @Path("/issuers/{issuer-id}/cards/link/{transaction-id}")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Link a range of cards to an issuer. The range of cards must be sequential.")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Successfully linked cards to issuer.", response = MultipleCardsIssuerLinkResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or card(s) not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout", response = ErrorDetail.class) })
   public final void linkCardsToIssuer(
         @ApiParam(value = "The issuer ID to which the cards should be linked.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The randomly generated UUID identifying this transaction, as  defined for a version 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)", required = true) @PathParam("transaction-id") String transactionId,
         @ApiParam(value = "Details for linking cards by sequence range.", required = true) MultipleCardsIssuerLinkRequest body,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().linkCardsToIssuer(
            issuerId,
            transactionId,
            body,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }
   
   @POST
   @Path("/issuers/{issuer-id}/cards/link/{card-id}/{transaction-id}")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Link a single card to an issuer.")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Successfully linked card to issuer.", response = MultipleCardsIssuerLinkResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or card not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout", response = ErrorDetail.class) })
   public final void linkCardToIssuer(
         @ApiParam(value = "The issuer ID to which the card should be linked.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The card id which should be linked.", required = true) @PathParam("card-id") String cardId,
         @ApiParam(value = "The randomly generated UUID identifying this transaction, as  defined for a version 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)", required = true) @PathParam("transaction-id") String transactionId,
         @ApiParam(value = "Details for linking the card.", required = true) SingleCardIssuerLinkRequest body,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().linkCardToIssuer(
            issuerId,
            cardId,
            transactionId,
            body,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }

   @PUT
   @Path("/issuers/{issuer-id}/cards/{card-id}/resetpin/{transaction-id}")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Reset the PIN of a card when the old PIN is unknown.")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Card PIN reset successful.", response = PinResetResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or card not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout", response = ErrorDetail.class) })
   public final void resetPin(
         @ApiParam(value = "The issuer ID to which the card belongs.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The card ID.", required = true) @PathParam("card-id") String cardId,
         @ApiParam(value = "The randomly generated UUID identifying this transaction, as  defined for a version 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)", required = true) @PathParam("transaction-id") String transactionId,
         @ApiParam(value = "Details of the PIN reset.", required = true) PinResetRequest body,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().resetPin(
            issuerId,
            cardId,
            transactionId,
            body,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }

   @GET
   @Path("/issuers/{issuer-id}/cards/{card-id}/balance")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Retrieve the available balance of a card.")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Card balance retrieived successfully.", response = CardBalanceResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or account not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout", response = ErrorDetail.class) })
   public final void getCardBalance(
         @ApiParam(value = "The issuer ID to which the card belongs.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The card ID.", required = true) @PathParam("card-id") String cardId,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().getCardBalance(
            issuerId,
            cardId,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }

   @PUT
   @Path("/issuers/{issuer-id}/cards/{card-id}/stop/{transaction-id}")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Place a card on hold.")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Card stopped successfully.", response = StopCardResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or card not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout", response = ErrorDetail.class) })
   public final void stopCard(
         @ApiParam(value = "The issuer ID to which the card belongs.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The card ID.", required = true) @PathParam("card-id") String cardId,
         @ApiParam(value = "The randomly generated UUID identifying this transaction, as  defined for a version 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)", required = true) @PathParam("transaction-id") String transactionId,
         @ApiParam(value = "Details of the stop reason.", required = true) StopCardRequest body,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().stopCard(
            issuerId,
            cardId,
            transactionId,
            body,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }

   @POST
   @Path("/issuers/{issuer-id}/transferFunds/{transaction-id}")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Transfer funds between cards and/or accounts.")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Successful response", response = FundsTransferResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or card or account not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout.", response = ErrorDetail.class) })
   public final void transferFunds(
         @ApiParam(value = "The issuer ID.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The randomly generated UUID identifying this transaction, as  defined for a version 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)", required = true) @PathParam("transaction-id") String transactionId,
         @ApiParam(value = "Details regarding the funds to be transferred.", required = true) FundsTransferRequest body,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().transferFunds(
            issuerId,
            transactionId,
            body,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }

   @PUT
   @Path("/issuers/{issuer-id}/customers/{customer-id}/update/{transaction-id}")
   @Consumes({ "application/json" })
   @Produces({ "application/json" })
   @ApiOperation(value = "", notes = "Update the details for an existing customer")
   @ApiResponses(value = {
         @ApiResponse(code = 200, message = "Customer update successful.", response = UpdateCustomerResponse.class),
         @ApiResponse(code = 400, message = "Bad Request.", response = ErrorDetail.class),
         @ApiResponse(code = 401, message = "Incorrect user name or password.", response = ErrorDetail.class),
         @ApiResponse(code = 404, message = "Issuer or customer not found.", response = ErrorDetail.class),
         @ApiResponse(code = 500, message = "Server error.", response = ErrorDetail.class),
         @ApiResponse(code = 504, message = "Gateway timeout", response = ErrorDetail.class) })
   public final void updateCustomer(
         @ApiParam(value = "The issuer ID to which the customer belongs.", required = true) @PathParam("issuer-id") String issuerId,
         @ApiParam(value = "The ID of the customer to be updated.", required = true) @PathParam("customer-id") String customerId,
         @ApiParam(value = "The randomly generated UUID identifying this transaction, as  defined for a version 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)", required = true) @PathParam("transaction-id") String transactionId,
         @ApiParam(value = "Extra details regarding the request message.", required = true) UpdateCustomerRequest body,
         @Context SecurityContext securityContext,
         @Context Request request,
         @Suspended AsyncResponse asyncResponse,
         @Context HttpHeaders httpHeaders,
         @Context UriInfo uriInfo,
         @Context HttpServletRequest httpServletRequest) {

      getResourceImplementation().updateCustomer(
            issuerId,
            customerId,
            transactionId,
            body,
            securityContext,
            request,
            httpHeaders,
            asyncResponse,
            uriInfo,
            httpServletRequest);
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy