taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

commit 5d39f3347dc603ebf49f6a37b6bbd309470fbd20
parent c50a441dc6636d5f7e92fcf0e2b5eb636f3346b5
Author: Christian Grothoff <christian@grothoff.org>
Date:   Sat,  4 Apr 2026 10:21:17 +0200

add missing ECs

Diffstat:
Mcore/exchange/get-deposits-H_WIRE-MERCHANT_PUB-H_CONTRACT_TERMS-COIN_PUB.rst | 6++++++
Mcore/exchange/get-kyc-check-H_NORMALIZED_PAYTO.rst | 6++++++
Mcore/exchange/get-reserves-RESERVE_PUB-history.rst | 52++++++++++++++++++++++++++++++++++++++++++++++++++++
Mcore/exchange/post-recoup-withdraw.rst | 19++++++++++++++++---
4 files changed, 80 insertions(+), 3 deletions(-)

diff --git a/core/exchange/get-deposits-H_WIRE-MERCHANT_PUB-H_CONTRACT_TERMS-COIN_PUB.rst b/core/exchange/get-deposits-H_WIRE-MERCHANT_PUB-H_CONTRACT_TERMS-COIN_PUB.rst @@ -30,11 +30,17 @@ executed. Hence the exchange does not yet have a wire transfer identifier. The merchant should come back later and ask again. The response body is a `TrackTransactionAcceptedResponse`. + :http:statuscode:`400 Bad request`: + A path parameter is malformed. + This response comes with a standard `ErrorDetail` response. :http:statuscode:`403 Forbidden`: A signature is invalid. This response comes with a standard `ErrorDetail` response. :http:statuscode:`404 Not found`: The deposit operation is unknown to the exchange. + :http:statuscode:`500 Internal Server Error`: + The exchange had an internal error processing the request. + This response comes with a standard `ErrorDetail` response. **Details:** diff --git a/core/exchange/get-kyc-check-H_NORMALIZED_PAYTO.rst b/core/exchange/get-kyc-check-H_NORMALIZED_PAYTO.rst @@ -84,6 +84,9 @@ The account identified by the normalized payto hash is unknown. :http:statuscode:`409 Conflict`: The bank account is not (yet) associated with a public key. The account owner must do a wire transfer to the exchange with the account public key in the wire transfer subject to enable authentication. + :http:statuscode:`500 Internal Server Error`: + The exchange had an internal error processing the request. + This response comes with a standard `ErrorDetail` response. **Details:** @@ -91,6 +94,9 @@ interface KycCheckAccountExpectedResponse { + // Taler error code, ``TALER_EC_EXCHANGE_KYC_CHECK_AUTHORIZATION_FAILED``. + code: Integer; + // Public key for which the signature must be // valid to authorize this request. expected_account_pub: EddsaPublicKey; diff --git a/core/exchange/get-reserves-RESERVE_PUB-history.rst b/core/exchange/get-reserves-RESERVE_PUB-history.rst @@ -63,6 +63,8 @@ | ReserveWithdrawTransaction | ReserveCreditTransaction | ReserveClosingTransaction + | ReserveRecoupTransaction + | ReserveHistoryRequestTransaction | ReserveOpenRequestTransaction | ReserveCloseRequestTransaction | PurseMergeTransaction; @@ -203,6 +205,56 @@ } + .. ts:def:: ReserveRecoupTransaction + + interface ReserveRecoupTransaction { + type: "RECOUP"; + + // Offset of this entry in the reserve history. + // Useful to request incremental histories via + // the "start" query parameter. + history_offset: Integer; + + // Public key of the coin that was paid back. + coin_pub: CoinPublicKey; + + // This is a signature over a + // struct `TALER_RecoupConfirmationPS` with purpose + // ``TALER_SIGNATURE_EXCHANGE_CONFIRM_RECOUP``. + exchange_sig: EddsaSignature; + + // Public key used to create 'exchange_sig'. + exchange_pub: EddsaPublicKey; + + // Time when the recoup was accepted. + timestamp: Timestamp; + + // Amount recouped to the reserve. + amount: Amount; + } + + .. ts:def:: ReserveHistoryRequestTransaction + + interface ReserveHistoryRequestTransaction { + type: "HISTORY"; + + // Offset of this entry in the reserve history. + // Useful to request incremental histories via + // the "start" query parameter. + history_offset: Integer; + + // Signature created with the reserve's private key. + // Must be of purpose ``TALER_SIGNATURE_RESERVE_HISTORY_REQUEST`` over + // a ``TALER_ReserveHistoryRequestSignaturePS``. + reserve_sig: EddsaSignature; + + // Timestamp of the history request. + request_timestamp: Timestamp; + + // Fee charged for the history request. + amount: Amount; + } + .. ts:def:: ReserveOpenRequestTransaction interface ReserveOpenRequestTransaction { diff --git a/core/exchange/post-recoup-withdraw.rst b/core/exchange/post-recoup-withdraw.rst @@ -25,12 +25,16 @@ :http:statuscode:`200 OK`: The request was successful, and the response is a `ReserveSummary`. :http:statuscode:`403 Forbidden`: - A coin's signature is invalid. + A coin's signature is invalid + (``TALER_EC_EXCHANGE_RECOUP_SIGNATURE_INVALID``) + or the denomination signature is invalid + (``TALER_EC_EXCHANGE_DENOMINATION_SIGNATURE_INVALID``). This response comes with a standard `ErrorDetail` response. :http:statuscode:`404 Not found`: A denomination key is unknown, the withdraw commitment is unknown - or a blinded coin is not known to have been withdrawn. + or a blinded coin is not known to have been withdrawn + (``TALER_EC_EXCHANGE_RECOUP_WITHDRAW_NOT_FOUND``). If a denomination key is unknown, the response will be a `DenominationUnknownMessage`. :http:statuscode:`409 Conflict`: @@ -43,10 +47,19 @@ The response is a `DepositDoubleSpendError`. :http:statuscode:`410 Gone`: A requested denomination key is not yet or no longer valid. - It either before the validity start, past the expiration or was not yet revoked. + It either before the validity start + (``TALER_EC_EXCHANGE_GENERIC_DENOMINATION_VALIDITY_IN_FUTURE``), + past the expiration + (``TALER_EC_EXCHANGE_GENERIC_DENOMINATION_EXPIRED``) + or was not yet revoked + (``TALER_EC_EXCHANGE_RECOUP_NOT_ELIGIBLE``). The response is a `DenominationGoneMessage`. Clients must evaluate the error code provided to understand which of the cases this is and handle it accordingly. + :http:statuscode:`500 Internal Server Error`: + The exchange encountered an internal error, for example a blinding + failure (``TALER_EC_EXCHANGE_RECOUP_BLINDING_FAILED``). + This response comes with a standard `ErrorDetail` response. **Details:**