aboutsummaryrefslogtreecommitdiff
path: root/bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt
diff options
context:
space:
mode:
Diffstat (limited to 'bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt')
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt14
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")