commit 1c9d8e6cd9515d9ca3f39f7d95bc1a72498ba808
parent 2c37eb1c43c7d6e07db2643ad977b6d732098114
Author: Özgür Kesim <oec-taler@kesim.org>
Date: Mon, 14 Jul 2025 14:30:54 +0200
[exchange] refine recoup-refresh
Diffstat:
1 file changed, 15 insertions(+), 14 deletions(-)
diff --git a/core/api-exchange.rst b/core/api-exchange.rst
@@ -3441,14 +3441,10 @@ became minted, and proof ownership of the coin itself.
.. http:post:: /recoup/withdraw
- Demand that a batch of coins be refunded via wire transfer to the original owner.
+ Demand that a batch of coins be refunded to the reserve,
+ from which the coins were originally withdrawn.
The coins must have been originated from the same call to withdraw, and be
a subset of that original batch.
-
- The base URL for ``/recoup/``-requests may differ from the main base URL of the
- exchange. The exchange MUST return a 307 or 308 redirection to the correct
- base URL if this is the case.
-
The remaining amount on the coin will be credited to the reserve
that the coins were withdrawn from, in the same withdraw request.
@@ -3517,17 +3513,20 @@ became minted, and proof ownership of the coin itself.
// a) the hash code of a blinded coin envelope (not to be recouped)
// b) the disclosed coin details, in order to recoup it.
type RecoupCoinData =
- | BlindedEnvelopeHash
- | RecoupDisclosedCoinDetails
+ | NonRecoupedCoin
+ | RecoupDisclosedCoinDetails,
- .. ts:def:: BlindedEnvelopeHash
+ .. ts:def:: NonRecoupedCoin
- // This is the SHA512 hash code of a blinded coin envelope,
- // including the corresponding denomination's hash.
- // It is the output of the TALER_coin_ev_hash function
- // from libtalerutil.
- type BlindedEnvelopeHash = HashCode;
+ interface NonRecoupedCoin {
+ type: "ev_hash";
+ // This is the SHA512 hash code of a blinded coin envelope,
+ // including the corresponding denomination's hash.
+ // It is the output of the TALER_coin_ev_hash function
+ // from libtalerutil.
+ h: HashCode;
+ };
.. ts:def:: RecoupDisclosedCoinDetails
@@ -3539,6 +3538,8 @@ became minted, and proof ownership of the coin itself.
// for the (unblinded) coin's public key,
// and the coin's signature to authorize the recoup request.
interface RecoupDisclosedCoinDetails {
+ type: "details";
+
// The coin's public key
coin_pub: CoinPublicKey;