diff options
Diffstat (limited to 'bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt')
-rw-r--r-- | bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt b/bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt index a7d0f2c6..eb39c136 100644 --- a/bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt +++ b/bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt @@ -506,6 +506,20 @@ private fun Routing.coreBankWithdrawalApi(db: Database, ctx: BankConfig) { WithdrawalConfirmationResult.Success -> call.respond(HttpStatusCode.NoContent) } } + post("/accounts/{USERNAME}/withdrawals/{withdrawal_id}/abort") { + val opId = call.uuidParameter("withdrawal_id") + when (db.withdrawal.abort(opId)) { + AbortResult.UnknownOperation -> throw notFound( + "Withdrawal operation $opId not found", + TalerErrorCode.BANK_TRANSACTION_NOT_FOUND + ) + AbortResult.AlreadyConfirmed -> throw conflict( + "Cannot abort confirmed withdrawal", + TalerErrorCode.BANK_ABORT_CONFIRM_CONFLICT + ) + AbortResult.Success -> call.respond(HttpStatusCode.NoContent) + } + } } get("/withdrawals/{withdrawal_id}") { val uuid = call.uuidParameter("withdrawal_id") |