taler-docs

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

commit 2065626dbcfa6790fdbde384448038630b8107aa
parent 46db49fd0dafaa2338b951645c9d227055219cf3
Author: Christian Grothoff <grothoff@gnunet.org>
Date:   Fri, 23 Jan 2026 11:04:33 +0900

spec update for #10907

Diffstat:
Mcore/api-merchant.rst | 55+++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 53 insertions(+), 2 deletions(-)

diff --git a/core/api-merchant.rst b/core/api-merchant.rst @@ -4075,8 +4075,9 @@ Creating orders The :ref:`KYC status <merchantkycstatus>` API can be used to determine details about how to proceed with the KYC process. - The body is an `ErrorDetail` with an error - code of ``MERCHANT_POST_ORDERS_ID_PAY_EXCHANGE_LEGALLY_REFUSED``. + Since **v25**, the body is an + `OrderRefusedErrorDetailResponse` with an error + code of ``MERCHANT_PRIVATE_POST_ORDERS_AMOUNT_EXCEEDS_LEGAL_LIMITS``. **Details:** @@ -4449,6 +4450,56 @@ Creating orders } + .. ts:def:: OrderRefusedErrorDetailResponse + + interface OrderRefusedErrorDetailResponse { + + // Numeric `error code <error-codes>` unique to the condition. + // Will be MERCHANT_PRIVATE_POST_ORDERS_AMOUNT_EXCEEDS_LEGAL_LIMITS). + code: ErrorCode; + + // Human-readable description of the error, i.e. "missing parameter", "commitment violation", ... + // Should give a human-readable hint about the error's nature. Optional, may change without notice! + hint?: string; + + // Detail about why a specific exchange was rejected. + // Note that an exchange that was allowed is not listed. + // It is possible that no exchanges were rejected (in which + // case this array would be empty) and still the operation + // failed because the total of the allowed amounts per + // exchange ended up below the order total. Thus, that + // is ultimately always the cause here (as per the code), + // but the *other* reasons why exchanges might have been + // rejected could be enlightening to the user and are + // thus provided here. + exchange_rejections: ExchangeRejectionDetail; + } + + .. ts:def:: ExchangeRejectionDetail + + interface ExchangeRejectionDetail { + + // Base URL of the rejected exchange + exchange_url: string; + + // Numeric `error code <error-codes>` unique to why + // this exchange was not acceptable. + // Can be MERCHANT_GENERIC_CURRENCY_MISMATCH, + // MERCHANT_POST_ORDERS_ID_PAY_EXCHANGE_LEGALLY_REFUSED + // (zero deposit limit, likely KYC required), + // MERCHANT_GENERIC_EXCHANGE_KEYS_FAILURE + // (we failed to download /keys from the exchange), + // MERCHANT_POST_ORDERS_ID_PAY_WIRE_METHOD_UNSUPPORTED + // (none of our bank accounts has a compatible wire method) + code: ErrorCode; + + // Human-readable description of the error. + // Should give a human-readable hint about the error's nature. + // Optional, may change without notice! + hint?: string; + + } + Inspecting orders ^^^^^^^^^^^^^^^^^