commit 2065626dbcfa6790fdbde384448038630b8107aa
parent 46db49fd0dafaa2338b951645c9d227055219cf3
Author: Christian Grothoff <grothoff@gnunet.org>
Date: Fri, 23 Jan 2026 11:04:33 +0900
spec update for #10907
Diffstat:
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
^^^^^^^^^^^^^^^^^