From a9b49b9c34e3e6dd73dc6794dafbd529efc35418 Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Thu, 15 Dec 2016 14:42:13 +0100 Subject: Fix misrendering of error codes list. --- api-common.rst | 1183 +---------------------------------------------------- api-error.rst | 1204 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ api-merchant.rst | 2 +- dev-merchant.rst | 1 + 4 files changed, 1207 insertions(+), 1183 deletions(-) create mode 100644 api-error.rst diff --git a/api-common.rst b/api-common.rst index 71d1ac11..01fcbd84 100644 --- a/api-common.rst +++ b/api-common.rst @@ -70,7 +70,7 @@ handle the error as if an internal error (500) had been returned. interface ErrorDetail { - // Numeric error code unique to the condition. See "taler_error_codes.h". + // Numeric `error code `_ unique to the condition. code: number; // Human-readable description of the error, i.e. "missing parameter", "commitment violation", ... @@ -704,1184 +704,3 @@ within the :ref:`exchange's codebase `. struct TALER_AmountNBO refund_amount; struct TALER_AmountNBO refund_fee; }; - - -Error Codes -^^^^^^^^^^^ -.. _error-codes: -.. code-block:: c - - /** - * Enumeration with all possible Taler error codes. - */ - enum TALER_ErrorCode { - - /** - * Special code to indicate no error (or no "code" present). - */ - TALER_EC_NONE = 0, - - /** - * Special code to indicate that a non-integer error code was - * returned in the JSON response. - */ - TALER_EC_INVALID = 1, - - /** - * The response we got from the server was not even in JSON format. - */ - TALER_EC_INVALID_RESPONSE = 2, - - /** - * Generic implementation error: this function was not yet implemented. - */ - TALER_EC_NOT_IMPLEMENTED = 3, - - /* ********** generic error codes ************* */ - - /** - * The exchange failed to even just initialize its connection to the - * database. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DB_SETUP_FAILED = 1001, - - /** - * The exchange encountered an error event to just start - * the database transaction. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DB_START_FAILED = 1002, - - /** - * The exchange encountered an error event to commit - * the database transaction (hard, unrecoverable error). - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DB_COMMIT_FAILED_HARD = 1003, - - /** - * The exchange encountered an error event to commit - * the database transaction, even after repeatedly - * retrying it there was always a conflicting transaction. - * (This indicates a repeated serialization error; should - * only happen if some client maliciously tries to create - * conflicting concurrent transactions.) - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DB_COMMIT_FAILED_ON_RETRY = 1004, - - /** - * The exchange had insufficient memory to parse the request. This - * response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PARSER_OUT_OF_MEMORY = 1005, - - /** - * The JSON in the client's request to the exchange was malformed. - * (Generic parse error). - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_JSON_INVALID = 1006, - - /** - * The JSON in the client's request to the exchange was malformed. - * Details about the location of the parse error are provided. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_JSON_INVALID_WITH_DETAILS = 1007, - - /** - * A required parameter in the request to the exchange was missing. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PARAMETER_MISSING = 1008, - - /** - * A parameter in the request to the exchange was malformed. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PARAMETER_MALFORMED = 1009, - - /* ********** request-specific error codes ************* */ - - /** - * The given reserve does not have sufficient funds to admit the - * requested withdraw operation at this time. The response includes - * the current "balance" of the reserve as well as the transaction - * "history" that lead to this balance. This response is provided - * with HTTP status code MHD_HTTP_FORBIDDEN. - */ - TALER_EC_WITHDRAW_INSUFFICIENT_FUNDS = 1100, - - /** - * The exchange has no information about the "reserve_pub" that - * was given. - * This response is provided with HTTP status code MHD_HTTP_NOT_FOUND. - */ - TALER_EC_WITHDRAW_RESERVE_UNKNOWN = 1101, - - /** - * The amount to withdraw together with the fee exceeds the - * numeric range for Taler amounts. This is not a client - * failure, as the coin value and fees come from the exchange's - * configuration. - * This response is provided with HTTP status code MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_WITHDRAW_AMOUNT_FEE_OVERFLOW = 1102, - - /** - * All of the deposited amounts into this reserve total up to a - * value that is too big for the numeric range for Taler amounts. - * This is not a client failure, as the transaction history comes - * from the exchange's configuration. This response is provided - * with HTTP status code MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_WITHDRAW_AMOUNT_DEPOSITS_OVERFLOW = 1103, - - /** - * For one of the historic withdrawals from this reserve, the - * exchange could not find the denomination key. - * This is not a client failure, as the transaction history comes - * from the exchange's configuration. This response is provided - * with HTTP status code MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_WITHDRAW_HISTORIC_DENOMINATION_KEY_NOT_FOUND = 1104, - - /** - * All of the withdrawals from reserve total up to a - * value that is too big for the numeric range for Taler amounts. - * This is not a client failure, as the transaction history comes - * from the exchange's configuration. This response is provided - * with HTTP status code MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_WITHDRAW_AMOUNT_WITHDRAWALS_OVERFLOW = 1105, - - /** - * The exchange somehow knows about this reserve, but there seem to - * have been no wire transfers made. This is not a client failure, - * as this is a database consistency issue of the exchange. This - * response is provided with HTTP status code - * MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_WITHDRAW_RESERVE_WITHOUT_WIRE_TRANSFER = 1106, - - /** - * The exchange failed to create the signature using the - * denomination key. This response is provided with HTTP status - * code MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_WITHDRAW_SIGNATURE_FAILED = 1107, - - /** - * The exchange failed to store the withdraw operation in its - * database. This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_WITHDRAW_DB_STORE_ERROR = 1108, - - /** - * The exchange failed to check against historic withdraw data from - * database (as part of ensuring the idempotency of the operation). - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_WITHDRAW_DB_FETCH_ERROR = 1109, - - /** - * The exchange is not aware of the denomination key - * the wallet requested for the withdrawal. - * This response is provided - * with HTTP status code MHD_HTTP_NOT_FOUND. - */ - TALER_EC_WITHDRAW_DENOMINATION_KEY_NOT_FOUND = 1110, - - /** - * The signature of the reserve is not valid. This response is - * provided with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_WITHDRAW_RESERVE_SIGNATURE_INVALID = 1111, - - /** - * The exchange failed to obtain the transaction history of the - * given reserve from the database while generating an insufficient - * funds errors. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_WITHDRAW_HISTORY_DB_ERROR_INSUFFICIENT_FUNDS = 1112, - - /** - * When computing the reserve history, we ended up with a negative - * overall balance, which should be impossible. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_WITHDRAW_RESERVE_HISTORY_IMPOSSIBLE = 1113, - - /** - * The exchange failed to obtain the transaction history of the - * given reserve from the database. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_RESERVE_STATUS_DB_ERROR = 1150, - - - /** - * The respective coin did not have sufficient residual value - * for the /deposit operation (i.e. due to double spending). - * The "history" in the respose provides the transaction history - * of the coin proving this fact. This response is provided - * with HTTP status code MHD_HTTP_FORBIDDEN. - */ - TALER_EC_DEPOSIT_INSUFFICIENT_FUNDS = 1200, - - /** - * The exchange failed to obtain the transaction history of the - * given coin from the database (this does not happen merely because - * the coin is seen by the exchange for the first time). - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DEPOSIT_HISTORY_DB_ERROR = 1201, - - /** - * The exchange failed to store the /depost information in the - * database. This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DEPOSIT_STORE_DB_ERROR = 1202, - - /** - * The exchange database is unaware of the denomination key that - * signed the coin (however, the exchange process is; this is not - * supposed to happen; it can happen if someone decides to purge the - * DB behind the back of the exchange process). Hence the deposit - * is being refused. This response is provided with HTTP status - * code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DEPOSIT_DB_DENOMINATION_KEY_UNKNOWN = 1203, - - /** - * The exchange database is unaware of the denomination key that - * signed the coin (however, the exchange process is; this is not - * supposed to happen; it can happen if someone decides to purge the - * DB behind the back of the exchange process). Hence the deposit - * is being refused. This response is provided with HTTP status - * code MHD_HTTP_NOT_FOUND. - */ - TALER_EC_DEPOSIT_DENOMINATION_KEY_UNKNOWN = 1204, - - /** - * The signature of the coin is not valid. This response is - * provided with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_COIN_SIGNATURE_INVALID = 1205, - - /** - * The signature of the denomination key over the coin is not valid. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_DENOMINATION_SIGNATURE_INVALID = 1206, - - /** - * The stated value of the coin after the deposit fee is subtracted - * would be negative. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_NEGATIVE_VALUE_AFTER_FEE = 1207, - - /** - * The stated refund deadline is after the wire deadline. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_REFUND_DEADLINE_AFTER_WIRE_DEADLINE = 1208, - - /** - * The exchange does not recognize the validity of or support the - * given wire format type. - * This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_TYPE = 1209, - - /** - * The exchange failed to canonicalize and hash the given wire format. - * This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_JSON = 1210, - - /** - * The hash of the given wire address does not match the hash - * specified in the contract. - * This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_CONTRACT_HASH_CONFLICT = 1211, - - /** - * The exchange failed to obtain the transaction history of the - * given coin from the database while generating an insufficient - * funds errors. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DEPOSIT_HISTORY_DB_ERROR_INSUFFICIENT_FUNDS = 1212, - - /** - * The exchange detected that the given account number - * is invalid for the selected wire format type. - * This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_ACCOUNT_NUMBER = 1213, - - /** - * The signature over the given wire details is invalid. - * This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_SIGNATURE = 1214, - - /** - * The bank specified in the wire transfer format is not supported - * by this exchange. - * This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_BANK = 1215, - - /** - * No wire format type was specified in the JSON wire format - * details. - * This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_TYPE_MISSING = 1216, - - /** - * The given wire format type is not supported by this - * exchange. - * This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_TYPE_UNSUPPORTED = 1217, - - - /** - * The respective coin did not have sufficient residual value - * for the /refresh/melt operation. The "history" in this - * response provdes the "residual_value" of the coin, which may - * be less than its "original_value". This response is provided - * with HTTP status code MHD_HTTP_FORBIDDEN. - */ - TALER_EC_REFRESH_MELT_INSUFFICIENT_FUNDS = 1300, - - /** - * The exchange is unaware of the denomination key that was - * used to sign the melted coin. This response is provided - * with HTTP status code MHD_HTTP_NOT_FOUND. - */ - TALER_EC_REFRESH_MELT_DENOMINATION_KEY_NOT_FOUND = 1301, - - /** - * The exchange had an internal error reconstructing the - * transaction history of the coin that was being melted. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REFRESH_MELT_COIN_HISTORY_COMPUTATION_FAILED = 1302, - - /** - * The exchange failed to check against historic melt data from - * database (as part of ensuring the idempotency of the operation). - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_REFRESH_MELT_DB_FETCH_ERROR = 1303, - - /** - * The exchange failed to store session data in the - * database. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_REFRESH_MELT_DB_STORE_SESSION_ERROR = 1304, - - /** - * The exchange failed to store refresh order data in the - * database. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_REFRESH_MELT_DB_STORE_ORDER_ERROR = 1305, - - /** - * The exchange failed to store commit data in the - * database. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_REFRESH_MELT_DB_STORE_COMMIT_ERROR = 1306, - - /** - * The exchange failed to store transfer keys in the - * database. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_REFRESH_MELT_DB_STORE_TRANSFER_ERROR = 1307, - - /** - * The exchange is unaware of the denomination key that was - * requested for one of the fresh coins. This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFRESH_MELT_FRESH_DENOMINATION_KEY_NOT_FOUND = 1308, - - /** - * The exchange encountered a numeric overflow totaling up - * the cost for the refresh operation. This response is provided - * with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REFRESH_MELT_COST_CALCULATION_OVERFLOW = 1309, - - /** - * During the transaction phase, the exchange could suddenly - * no longer find the denomination key that was - * used to sign the melted coin. This response is provided - * with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REFRESH_MELT_DB_DENOMINATION_KEY_NOT_FOUND = 1310, - - /** - * The exchange encountered melt fees exceeding the melted - * coin's contribution. This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFRESH_MELT_FEES_EXCEED_CONTRIBUTION = 1311, - - /** - * The exchange's cost calculation does not add up to the - * melt fees specified in the request. This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFRESH_MELT_FEES_MISSMATCH = 1312, - - /** - * The denomination key signature on the melted coin is invalid. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFRESH_MELT_DENOMINATION_SIGNATURE_INVALID = 1313, - - /** - * The exchange's cost calculation shows that the melt amount - * is below the costs of the transaction. This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFRESH_MELT_AMOUNT_INSUFFICIENT = 1314, - - /** - * The signature made with the coin to be melted is invalid. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFRESH_MELT_COIN_SIGNATURE_INVALID = 1315, - - /** - * The size of the cut-and-choose dimension of the - * blinded coins request does not match #TALER_CNC_KAPPA. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFRESH_MELT_CNC_COIN_ARRAY_SIZE_INVALID = 1316, - - /** - * The size of the cut-and-choose dimension of the - * transfer keys request does not match #TALER_CNC_KAPPA. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFRESH_MELT_CNC_TRANSFER_ARRAY_SIZE_INVALID = 1317, - - /** - * The exchange failed to obtain the transaction history of the - * given coin from the database while generating an insufficient - * funds errors. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REFRESH_MELT_HISTORY_DB_ERROR_INSUFFICIENT_FUNDS = 1318, - - /** - * The provided transfer keys do not match up with the - * original commitment. Information about the original - * commitment is included in the response. This response is - * provided with HTTP status code MHD_HTTP_CONFLICT. - */ - TALER_EC_REFRESH_REVEAL_COMMITMENT_VIOLATION = 1350, - - /** - * Failed to blind the envelope to reconstruct the blinded - * coins for revealation checks. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_REFRESH_REVEAL_BLINDING_ERROR = 1351, - - /** - * Failed to produce the blinded signatures over the coins - * to be returned. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_REFRESH_REVEAL_SIGNING_ERROR = 1352, - - /** - * The exchange is unaware of the refresh sessino specified in - * the request. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFRESH_REVEAL_SESSION_UNKNOWN = 1353, - - /** - * The exchange failed to retrieve valid session data from the - * database. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_REFRESH_REVEAL_DB_FETCH_SESSION_ERROR = 1354, - - /** - * The exchange failed to retrieve order data from the - * database. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_REFRESH_REVEAL_DB_FETCH_ORDER_ERROR = 1355, - - /** - * The exchange failed to retrieve transfer keys from the - * database. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_REFRESH_REVEAL_DB_FETCH_TRANSFER_ERROR = 1356, - - /** - * The exchange failed to retrieve commitment data from the - * database. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_ERROR. - */ - TALER_EC_REFRESH_REVEAL_DB_FETCH_COMMIT_ERROR = 1357, - - /** - * The size of the cut-and-choose dimension of the - * private transfer keys request does not match #TALER_CNC_KAPPA - 1. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFRESH_REVEAL_CNC_TRANSFER_ARRAY_SIZE_INVALID = 1358, - - - /** - * The coin specified in the link request is unknown to the exchange. - * This response is provided with HTTP status code - * MHD_HTTP_NOT_FOUND. - */ - TALER_EC_REFRESH_LINK_COIN_UNKNOWN = 1400, - - - /** - * The exchange knows literally nothing about the coin we were asked - * to refund. But without a transaction history, we cannot issue a - * refund. This is kind-of OK, the owner should just refresh it - * directly without executing the refund. This response is provided - * with HTTP status code MHD_HTTP_NOT_FOUND. - */ - TALER_EC_REFUND_COIN_NOT_FOUND = 1500, - - /** - * We could not process the refund request as the coin's transaction - * history does not permit the requested refund at this time. The - * "history" in the response proves this. This response is provided - * with HTTP status code MHD_HTTP_CONFLICT. - */ - TALER_EC_REFUND_CONFLICT = 1501, - - /** - * The exchange knows about the coin we were asked to refund, but - * not about the specific /deposit operation. Hence, we cannot - * issue a refund (as we do not know if this merchant public key is - * authorized to do a refund). This response is provided with HTTP - * status code MHD_HTTP_NOT_FOUND. - */ - TALER_EC_REFUND_DEPOSIT_NOT_FOUND = 1503, - - /** - * The currency specified for the refund is different from - * the currency of the coin. This response is provided with HTTP - * status code MHD_HTTP_PRECONDITION_FAILED. - */ - TALER_EC_REFUND_CURRENCY_MISSMATCH = 1504, - - /** - * When we tried to check if we already paid out the coin, the - * exchange's database suddenly disagreed with data it previously - * provided (internal inconsistency). - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REFUND_DB_INCONSISTENT = 1505, - - /** - * The exchange can no longer refund the customer/coin as the - * money was already transferred (paid out) to the merchant. - * (It should be past the refund deadline.) - * This response is provided with HTTP status code - * MHD_HTTP_GONE. - */ - TALER_EC_REFUND_MERCHANT_ALREADY_PAID = 1506, - - /** - * The amount the exchange was asked to refund exceeds - * (with fees) the total amount of the deposit (including fees). - * This response is provided with HTTP status code - * MHD_HTTP_PRECONDITION_FAILED. - */ - TALER_EC_REFUND_INSUFFICIENT_FUNDS = 1507, - - /** - * The exchange failed to recover information about the - * denomination key of the refunded coin (even though it - * recognizes the key). Hence it could not check the fee - * strucutre. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REFUND_DENOMINATION_KEY_NOT_FOUND = 1508, - - /** - * The refund fee specified for the request is lower than - * the refund fee charged by the exchange for the given - * denomination key of the refunded coin. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFUND_FEE_TOO_LOW = 1509, - - /** - * The exchange failed to store the refund information to - * its database. - * This response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REFUND_STORE_DB_ERROR = 1510, - - /** - * The refund fee is specified in a different currency - * than the refund amount. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFUND_FEE_CURRENCY_MISSMATCH = 1511, - - /** - * The refunded amount is smaller than the refund fee, - * which would result in a negative refund. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFUND_FEE_ABOVE_AMOUNT = 1512, - - /** - * The signature of the merchant is invalid. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFUND_MERCHANT_SIGNATURE_INVALID = 1513, - - - /** - * The wire format specified in the "sender_account_details" - * is not understood or not supported by this exchange. - * Returned with an HTTP status code of MHD_HTTP_NOT_FOUND. - * (As we did not find an interpretation of the wire format.) - */ - TALER_EC_ADMIN_ADD_INCOMING_WIREFORMAT_UNSUPPORTED = 1600, - - /** - * The currency specified in the "amount" parameter is not - * supported by this exhange. Returned with an HTTP status - * code of MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_ADMIN_ADD_INCOMING_CURRENCY_UNSUPPORTED = 1601, - - /** - * The exchange failed to store information about the incoming - * transfer in its database. This response is provided with HTTP - * status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_ADMIN_ADD_INCOMING_DB_STORE = 1602, - - /** - * The exchange encountered an error (that is not about not finding - * the wire transfer) trying to lookup a wire transfer identifier - * in the database. This response is provided with HTTP - * status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSFER_DB_FETCH_FAILED = 1700, - - /** - * The exchange found internally inconsistent data when resolving a - * wire transfer identifier in the database. This response is - * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSFER_DB_INCONSISTENT = 1701, - - /** - * The exchange did not find information about the specified - * wire transfer identifier in the database. This response is - * provided with HTTP status code MHD_HTTP_NOT_FOUND. - */ - TALER_EC_TRACK_TRANSFER_WTID_NOT_FOUND = 1702, - - - /** - * The exchange found internally inconsistent fee data when - * resolving a transaction in the database. This - * response is provided with HTTP status code - * MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSACTION_DB_FEE_INCONSISTENT = 1800, - - /** - * The exchange encountered an error (that is not about not finding - * the transaction) trying to lookup a transaction - * in the database. This response is provided with HTTP - * status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSACTION_DB_FETCH_FAILED = 1801, - - /** - * The exchange did not find information about the specified - * transaction in the database. This response is - * provided with HTTP status code MHD_HTTP_NOT_FOUND. - */ - TALER_EC_TRACK_TRANSACTION_NOT_FOUND = 1802, - - /** - * The exchange failed to identify the wire transfer of the - * transaction (or information about the plan that it was supposed - * to still happen in the future). This response is provided with - * HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSACTION_WTID_RESOLUTION_ERROR = 1803, - - /** - * The signature of the merchant is invalid. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_TRACK_TRANSACTION_MERCHANT_SIGNATURE_INVALID = 1804, - - - /* *********** Merchant backend error codes ********* */ - - /** - * The backend could not find the merchant instance specified - * in the request. This response is - * provided with HTTP status code MHD_HTTP_NOT_FOUND. - */ - TALER_EC_CONTRACT_INSTANCE_UNKNOWN = 2000, - - /** - * The exchange failed to provide a meaningful response - * to a /deposit request. This response is provided - * with HTTP status code MHD_HTTP_SERVICE_UNAVAILABLE. - */ - TALER_EC_PAY_EXCHANGE_FAILED = 2101, - - /** - * The merchant failed to commit the exchanges' response to - * a /deposit request to its database. This response is provided - * with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PAY_DB_STORE_PAY_ERROR = 2102, - - /** - * The specified exchange is not supported/trusted by - * this merchant. This response is provided - * with HTTP status code MHD_HTTP_PRECONDITION_FAILED. - */ - TALER_EC_PAY_EXCHANGE_REJECTED = 2103, - - /** - * The denomination key used for payment is not listed among the - * denomination keys of the exchange. This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_DENOMINATION_KEY_NOT_FOUND = 2104, - - /** - * The denomination key used for payment is not audited by an - * auditor approved by the merchant. This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_DENOMINATION_KEY_AUDITOR_FAILURE = 2105, - - /** - * There was an integer overflow totaling up the amounts or - * deposit fees in the payment. This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_AMOUNT_OVERFLOW = 2106, - - /** - * The deposit fees exceed the total value of the payment. - * This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_FEES_EXCEED_PAYMENT = 2107, - - /** - * After considering deposit fees, the payment is insufficient - * to satisfy the required amount for the contract. - * This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_PAYMENT_INSUFFICIENT_DUE_TO_FEES = 2108, - - /** - * While the merchant is happy to cover all applicable deposit fees, - * the payment is insufficient to satisfy the required amount for - * the contract. This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_PAYMENT_INSUFFICIENT = 2109, - - /** - * The signature over the contract of one of the coins - * was invalid. This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_COIN_SIGNATURE_INVALID = 2110, - - /** - * We failed to contact the exchange for the /pay request. - * This response is provided - * with HTTP status code MHD_HTTP_SERVICE_UNAVAILABLE. - */ - TALER_EC_PAY_EXCHANGE_TIMEOUT = 2111, - - /** - * The backend could not find the merchant instance specified - * in the request. This response is - * provided with HTTP status code MHD_HTTP_NOT_FOUND. - */ - TALER_EC_PAY_INSTANCE_UNKNOWN = 2112, - - /** - * The signature over the contract of the merchant - * was invalid. This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_MERCHANT_SIGNATURE_INVALID = 2113, - - /** - * The refund deadline was after the transfer deadline. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_REFUND_DEADLINE_PAST_WIRE_TRANSFER_DEADLINE = 2114, - - /** - * The request fails to provide coins for the payment. - * This response is provided with HTTP status code - * MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_COINS_ARRAY_EMPTY = 2115, - - /** - * The merchant failed to fetch the merchant's previous state with - * respect to a /pay request from its database. This response is - * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PAY_DB_FETCH_PAY_ERROR = 2116, - - /** - * The merchant failed to fetch the merchant's previous state with - * respect to transactions from its database. This response is - * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PAY_DB_FETCH_TRANSACTION_ERROR = 2117, - - /** - * The transaction ID was used for a conflicing transaction before. - * This response is - * provided with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_DB_TRANSACTION_ID_CONFLICT = 2118, - - /** - * The merchant failed to store the merchant's state with - * respect to the transaction in its database. This response is - * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PAY_DB_STORE_TRANSACTION_ERROR = 2119, - - /** - * The exchange failed to provide a valid response to - * the merchant's /keys request. - * This response is provided - * with HTTP status code MHD_HTTP_SERVICE_UNAVAILABLE. - */ - TALER_EC_PAY_EXCHANGE_KEYS_FAILURE = 2120, - - /** - * The payment is too late, the offer has expired. - * This response is - * provided with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_OFFER_EXPIRED = 2121, - - - /** - * Integer overflow with sepcified timestamp argument detected. - * This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_HISTORY_TIMESTAMP_OVERFLOW = 2200, - - /** - * Failed to retrieve history from merchant database. - * This response is provided - * with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_HISTORY_DB_FETCH_ERROR = 2201, - - /** - * We failed to contact the exchange for the /track/transaction - * request. This response is provided with HTTP status code - * MHD_HTTP_SERVICE_UNAVAILABLE. - */ - TALER_EC_TRACK_TRANSACTION_EXCHANGE_TIMEOUT = 2300, - - /** - * The backend could not find the merchant instance specified - * in the request. This response is - * provided with HTTP status code MHD_HTTP_NOT_FOUND. - */ - TALER_EC_TRACK_TRANSACTION_INSTANCE_UNKNOWN = 2301, - - /** - * The backend could not find the transaction specified - * in the request. This response is - * provided with HTTP status code MHD_HTTP_NOT_FOUND. - */ - TALER_EC_TRACK_TRANSACTION_TRANSACTION_UNKNOWN = 2302, - - /** - * The backend had a database access error trying to - * retrieve transaction data from its database. - * The response is - * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSACTION_DB_FETCH_TRANSACTION_ERROR = 2303, - - /** - * The backend had a database access error trying to - * retrieve payment data from its database. - * The response is - * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSACTION_DB_FETCH_PAYMENT_ERROR = 2304, - - /** - * The backend found no applicable deposits in the database. - * This is odd, as we know about the transaction, but not - * about deposits we made for the transaction. The response is - * provided with HTTP status code MHD_HTTP_NOT_FOUND. - */ - TALER_EC_TRACK_TRANSACTION_DB_NO_DEPOSITS_ERROR = 2305, - - /** - * We failed to obtain a wire transfer identifier for one - * of the coins in the transaction. The response is - * provided with HTTP status code MHD_HTTP_FAILED_DEPENDENCY if - * the exchange had a hard error, or MHD_HTTP_ACCEPTED if the - * exchange signaled that the transfer was in progress. - */ - TALER_EC_TRACK_TRANSACTION_COIN_TRACE_ERROR = 2306, - - /** - * We failed to obtain the full wire transfer identifier for the - * transfer one of the coins was aggregated into. - * The response is - * provided with HTTP status code MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TRACK_TRANSACTION_WIRE_TRANSFER_TRACE_ERROR = 2307, - - /** - * We got conflicting reports from the exhange with - * respect to which transfers are included in which - * aggregate. - * The response is - * provided with HTTP status code MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TRACK_TRANSACTION_CONFLICTING_REPORTS = 2308, - - - /** - * We failed to contact the exchange for the /track/transfer - * request. This response is provided with HTTP status code - * MHD_HTTP_SERVICE_UNAVAILABLE. - */ - TALER_EC_TRACK_TRANSFER_EXCHANGE_TIMEOUT = 2400, - - /** - * The backend could not find the merchant instance specified - * in the request. This response is - * provided with HTTP status code MHD_HTTP_NOT_FOUND. - */ - TALER_EC_TRACK_TRANSFER_INSTANCE_UNKNOWN = 2401, - - /** - * We failed to persist coin wire transfer information in - * our merchant database. - * The response is - * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSFER_DB_STORE_COIN_ERROR = 2402, - - /** - * We internally failed to execute the /track/transfer request. - * The response is - * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSFER_REQUEST_ERROR = 2403, - - /** - * We failed to persist wire transfer information in - * our merchant database. - * The response is - * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSFER_DB_STORE_TRANSFER_ERROR = 2404, - - /** - * The exchange returned an error from /track/transfer. - * The response is - * provided with HTTP status code MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TRACK_TRANSFER_EXCHANGE_ERROR = 2405, - - /** - * We failed to fetch deposit information from - * our merchant database. - * The response is - * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSFER_DB_FETCH_DEPOSIT_ERROR = 2406, - - /** - * We encountered an internal logic error. - * The response is - * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSFER_DB_INTERNAL_LOGIC_ERROR = 2407, - - /** - * The exchange gave conflicting information about a coin which has - * been wire transferred. - * The response is provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSFER_CONFLICTING_REPORTS = 2408, - - /** - * The hash provided in the request of /map/in does not match - * the contract sent alongside in the same request. - */ - TALER_EC_MAP_IN_UNMATCHED_HASH = 2500, - - /** - * The backend encountered an error while trying to store the - * pair into the database. - * The response is provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_MAP_IN_STORE_DB_ERROR = 2501, - - /** - * The backend encountered an error while trying to retrieve the - * contract from database. Likely to be an internal error. - */ - TALER_EC_MAP_OUT_GET_FROM_DB_ERROR = 2502, - - - /** - * The backend encountered an error while trying to retrieve the - * contract from database. Likely to be an internal error. - */ - TALER_EC_MAP_OUT_CONTRACT_UNKNOWN = 2503, - - /* ********** /test API error codes ************* */ - - /** - * The exchange failed to compute ECDH. This response is provided - * with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TEST_ECDH_ERROR = 4000, - - /** - * The EdDSA test signature is invalid. This response is provided - * with HTTP status code MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_TEST_EDDSA_INVALID = 4001, - - /** - * The exchange failed to compute the EdDSA test signature. This response is provided - * with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TEST_EDDSA_ERROR = 4002, - - /** - * The exchange failed to generate an RSA key. This response is provided - * with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TEST_RSA_GEN_ERROR = 4003, - - /** - * The exchange failed to compute the public RSA key. This response - * is provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TEST_RSA_PUB_ERROR = 4004, - - /** - * The exchange failed to compute the RSA signature. This response - * is provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TEST_RSA_SIGN_ERROR = 4005, - - - /** - * End of error code range. - */ - TALER_EC_END = 9999 - }; diff --git a/api-error.rst b/api-error.rst new file mode 100644 index 00000000..cf107b11 --- /dev/null +++ b/api-error.rst @@ -0,0 +1,1204 @@ +.. + This file is part of GNU TALER. + Copyright (C) 2014, 2015, 2016 GNUnet e.V. and INRIA + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 2.1, or (at your option) any later version. + TALER is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public License along with + TALER; see the file COPYING. If not, see + + @author Marcello Stanisci + +.. + The reason to have a dedicate page for error codes was due to a buggy + behaviour in pages cross-linking: was not possible from other pages to + reference the '_error-codes' label (see just below) if we kept in api-common.rst + (which is the best place to place this error codes list). + +----------- +Error Codes +----------- + +The following list shows error codes defined in +``/src/include/taler_error_codes.h`` + +.. _error-codes: +.. code-block:: c + + /** + * Enumeration with all possible Taler error codes. + */ + enum TALER_ErrorCode { + + /** + * Special code to indicate no error (or no "code" present). + */ + TALER_EC_NONE = 0, + + /** + * Special code to indicate that a non-integer error code was + * returned in the JSON response. + */ + TALER_EC_INVALID = 1, + + /** + * The response we got from the server was not even in JSON format. + */ + TALER_EC_INVALID_RESPONSE = 2, + + /** + * Generic implementation error: this function was not yet implemented. + */ + TALER_EC_NOT_IMPLEMENTED = 3, + + /* ********** generic error codes ************* */ + + /** + * The exchange failed to even just initialize its connection to the + * database. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_DB_SETUP_FAILED = 1001, + + /** + * The exchange encountered an error event to just start + * the database transaction. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_DB_START_FAILED = 1002, + + /** + * The exchange encountered an error event to commit + * the database transaction (hard, unrecoverable error). + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_DB_COMMIT_FAILED_HARD = 1003, + + /** + * The exchange encountered an error event to commit + * the database transaction, even after repeatedly + * retrying it there was always a conflicting transaction. + * (This indicates a repeated serialization error; should + * only happen if some client maliciously tries to create + * conflicting concurrent transactions.) + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_DB_COMMIT_FAILED_ON_RETRY = 1004, + + /** + * The exchange had insufficient memory to parse the request. This + * response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_PARSER_OUT_OF_MEMORY = 1005, + + /** + * The JSON in the client's request to the exchange was malformed. + * (Generic parse error). + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_JSON_INVALID = 1006, + + /** + * The JSON in the client's request to the exchange was malformed. + * Details about the location of the parse error are provided. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_JSON_INVALID_WITH_DETAILS = 1007, + + /** + * A required parameter in the request to the exchange was missing. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_PARAMETER_MISSING = 1008, + + /** + * A parameter in the request to the exchange was malformed. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_PARAMETER_MALFORMED = 1009, + + /* ********** request-specific error codes ************* */ + + /** + * The given reserve does not have sufficient funds to admit the + * requested withdraw operation at this time. The response includes + * the current "balance" of the reserve as well as the transaction + * "history" that lead to this balance. This response is provided + * with HTTP status code MHD_HTTP_FORBIDDEN. + */ + TALER_EC_WITHDRAW_INSUFFICIENT_FUNDS = 1100, + + /** + * The exchange has no information about the "reserve_pub" that + * was given. + * This response is provided with HTTP status code MHD_HTTP_NOT_FOUND. + */ + TALER_EC_WITHDRAW_RESERVE_UNKNOWN = 1101, + + /** + * The amount to withdraw together with the fee exceeds the + * numeric range for Taler amounts. This is not a client + * failure, as the coin value and fees come from the exchange's + * configuration. + * This response is provided with HTTP status code MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_WITHDRAW_AMOUNT_FEE_OVERFLOW = 1102, + + /** + * All of the deposited amounts into this reserve total up to a + * value that is too big for the numeric range for Taler amounts. + * This is not a client failure, as the transaction history comes + * from the exchange's configuration. This response is provided + * with HTTP status code MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_WITHDRAW_AMOUNT_DEPOSITS_OVERFLOW = 1103, + + /** + * For one of the historic withdrawals from this reserve, the + * exchange could not find the denomination key. + * This is not a client failure, as the transaction history comes + * from the exchange's configuration. This response is provided + * with HTTP status code MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_WITHDRAW_HISTORIC_DENOMINATION_KEY_NOT_FOUND = 1104, + + /** + * All of the withdrawals from reserve total up to a + * value that is too big for the numeric range for Taler amounts. + * This is not a client failure, as the transaction history comes + * from the exchange's configuration. This response is provided + * with HTTP status code MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_WITHDRAW_AMOUNT_WITHDRAWALS_OVERFLOW = 1105, + + /** + * The exchange somehow knows about this reserve, but there seem to + * have been no wire transfers made. This is not a client failure, + * as this is a database consistency issue of the exchange. This + * response is provided with HTTP status code + * MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_WITHDRAW_RESERVE_WITHOUT_WIRE_TRANSFER = 1106, + + /** + * The exchange failed to create the signature using the + * denomination key. This response is provided with HTTP status + * code MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_WITHDRAW_SIGNATURE_FAILED = 1107, + + /** + * The exchange failed to store the withdraw operation in its + * database. This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_WITHDRAW_DB_STORE_ERROR = 1108, + + /** + * The exchange failed to check against historic withdraw data from + * database (as part of ensuring the idempotency of the operation). + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_WITHDRAW_DB_FETCH_ERROR = 1109, + + /** + * The exchange is not aware of the denomination key + * the wallet requested for the withdrawal. + * This response is provided + * with HTTP status code MHD_HTTP_NOT_FOUND. + */ + TALER_EC_WITHDRAW_DENOMINATION_KEY_NOT_FOUND = 1110, + + /** + * The signature of the reserve is not valid. This response is + * provided with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_WITHDRAW_RESERVE_SIGNATURE_INVALID = 1111, + + /** + * The exchange failed to obtain the transaction history of the + * given reserve from the database while generating an insufficient + * funds errors. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_WITHDRAW_HISTORY_DB_ERROR_INSUFFICIENT_FUNDS = 1112, + + /** + * When computing the reserve history, we ended up with a negative + * overall balance, which should be impossible. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_WITHDRAW_RESERVE_HISTORY_IMPOSSIBLE = 1113, + + /** + * The exchange failed to obtain the transaction history of the + * given reserve from the database. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_RESERVE_STATUS_DB_ERROR = 1150, + + + /** + * The respective coin did not have sufficient residual value + * for the /deposit operation (i.e. due to double spending). + * The "history" in the respose provides the transaction history + * of the coin proving this fact. This response is provided + * with HTTP status code MHD_HTTP_FORBIDDEN. + */ + TALER_EC_DEPOSIT_INSUFFICIENT_FUNDS = 1200, + + /** + * The exchange failed to obtain the transaction history of the + * given coin from the database (this does not happen merely because + * the coin is seen by the exchange for the first time). + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_DEPOSIT_HISTORY_DB_ERROR = 1201, + + /** + * The exchange failed to store the /depost information in the + * database. This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_DEPOSIT_STORE_DB_ERROR = 1202, + + /** + * The exchange database is unaware of the denomination key that + * signed the coin (however, the exchange process is; this is not + * supposed to happen; it can happen if someone decides to purge the + * DB behind the back of the exchange process). Hence the deposit + * is being refused. This response is provided with HTTP status + * code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_DEPOSIT_DB_DENOMINATION_KEY_UNKNOWN = 1203, + + /** + * The exchange database is unaware of the denomination key that + * signed the coin (however, the exchange process is; this is not + * supposed to happen; it can happen if someone decides to purge the + * DB behind the back of the exchange process). Hence the deposit + * is being refused. This response is provided with HTTP status + * code MHD_HTTP_NOT_FOUND. + */ + TALER_EC_DEPOSIT_DENOMINATION_KEY_UNKNOWN = 1204, + + /** + * The signature of the coin is not valid. This response is + * provided with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_DEPOSIT_COIN_SIGNATURE_INVALID = 1205, + + /** + * The signature of the denomination key over the coin is not valid. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_DEPOSIT_DENOMINATION_SIGNATURE_INVALID = 1206, + + /** + * The stated value of the coin after the deposit fee is subtracted + * would be negative. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_DEPOSIT_NEGATIVE_VALUE_AFTER_FEE = 1207, + + /** + * The stated refund deadline is after the wire deadline. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_DEPOSIT_REFUND_DEADLINE_AFTER_WIRE_DEADLINE = 1208, + + /** + * The exchange does not recognize the validity of or support the + * given wire format type. + * This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_TYPE = 1209, + + /** + * The exchange failed to canonicalize and hash the given wire format. + * This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_JSON = 1210, + + /** + * The hash of the given wire address does not match the hash + * specified in the contract. + * This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_CONTRACT_HASH_CONFLICT = 1211, + + /** + * The exchange failed to obtain the transaction history of the + * given coin from the database while generating an insufficient + * funds errors. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_DEPOSIT_HISTORY_DB_ERROR_INSUFFICIENT_FUNDS = 1212, + + /** + * The exchange detected that the given account number + * is invalid for the selected wire format type. + * This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_ACCOUNT_NUMBER = 1213, + + /** + * The signature over the given wire details is invalid. + * This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_SIGNATURE = 1214, + + /** + * The bank specified in the wire transfer format is not supported + * by this exchange. + * This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_BANK = 1215, + + /** + * No wire format type was specified in the JSON wire format + * details. + * This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_TYPE_MISSING = 1216, + + /** + * The given wire format type is not supported by this + * exchange. + * This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_TYPE_UNSUPPORTED = 1217, + + + /** + * The respective coin did not have sufficient residual value + * for the /refresh/melt operation. The "history" in this + * response provdes the "residual_value" of the coin, which may + * be less than its "original_value". This response is provided + * with HTTP status code MHD_HTTP_FORBIDDEN. + */ + TALER_EC_REFRESH_MELT_INSUFFICIENT_FUNDS = 1300, + + /** + * The exchange is unaware of the denomination key that was + * used to sign the melted coin. This response is provided + * with HTTP status code MHD_HTTP_NOT_FOUND. + */ + TALER_EC_REFRESH_MELT_DENOMINATION_KEY_NOT_FOUND = 1301, + + /** + * The exchange had an internal error reconstructing the + * transaction history of the coin that was being melted. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_REFRESH_MELT_COIN_HISTORY_COMPUTATION_FAILED = 1302, + + /** + * The exchange failed to check against historic melt data from + * database (as part of ensuring the idempotency of the operation). + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_REFRESH_MELT_DB_FETCH_ERROR = 1303, + + /** + * The exchange failed to store session data in the + * database. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_REFRESH_MELT_DB_STORE_SESSION_ERROR = 1304, + + /** + * The exchange failed to store refresh order data in the + * database. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_REFRESH_MELT_DB_STORE_ORDER_ERROR = 1305, + + /** + * The exchange failed to store commit data in the + * database. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_REFRESH_MELT_DB_STORE_COMMIT_ERROR = 1306, + + /** + * The exchange failed to store transfer keys in the + * database. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_REFRESH_MELT_DB_STORE_TRANSFER_ERROR = 1307, + + /** + * The exchange is unaware of the denomination key that was + * requested for one of the fresh coins. This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_REFRESH_MELT_FRESH_DENOMINATION_KEY_NOT_FOUND = 1308, + + /** + * The exchange encountered a numeric overflow totaling up + * the cost for the refresh operation. This response is provided + * with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_REFRESH_MELT_COST_CALCULATION_OVERFLOW = 1309, + + /** + * During the transaction phase, the exchange could suddenly + * no longer find the denomination key that was + * used to sign the melted coin. This response is provided + * with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_REFRESH_MELT_DB_DENOMINATION_KEY_NOT_FOUND = 1310, + + /** + * The exchange encountered melt fees exceeding the melted + * coin's contribution. This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_REFRESH_MELT_FEES_EXCEED_CONTRIBUTION = 1311, + + /** + * The exchange's cost calculation does not add up to the + * melt fees specified in the request. This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_REFRESH_MELT_FEES_MISSMATCH = 1312, + + /** + * The denomination key signature on the melted coin is invalid. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_REFRESH_MELT_DENOMINATION_SIGNATURE_INVALID = 1313, + + /** + * The exchange's cost calculation shows that the melt amount + * is below the costs of the transaction. This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_REFRESH_MELT_AMOUNT_INSUFFICIENT = 1314, + + /** + * The signature made with the coin to be melted is invalid. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_REFRESH_MELT_COIN_SIGNATURE_INVALID = 1315, + + /** + * The size of the cut-and-choose dimension of the + * blinded coins request does not match #TALER_CNC_KAPPA. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_REFRESH_MELT_CNC_COIN_ARRAY_SIZE_INVALID = 1316, + + /** + * The size of the cut-and-choose dimension of the + * transfer keys request does not match #TALER_CNC_KAPPA. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_REFRESH_MELT_CNC_TRANSFER_ARRAY_SIZE_INVALID = 1317, + + /** + * The exchange failed to obtain the transaction history of the + * given coin from the database while generating an insufficient + * funds errors. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_REFRESH_MELT_HISTORY_DB_ERROR_INSUFFICIENT_FUNDS = 1318, + + /** + * The provided transfer keys do not match up with the + * original commitment. Information about the original + * commitment is included in the response. This response is + * provided with HTTP status code MHD_HTTP_CONFLICT. + */ + TALER_EC_REFRESH_REVEAL_COMMITMENT_VIOLATION = 1350, + + /** + * Failed to blind the envelope to reconstruct the blinded + * coins for revealation checks. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_REFRESH_REVEAL_BLINDING_ERROR = 1351, + + /** + * Failed to produce the blinded signatures over the coins + * to be returned. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_REFRESH_REVEAL_SIGNING_ERROR = 1352, + + /** + * The exchange is unaware of the refresh sessino specified in + * the request. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_REFRESH_REVEAL_SESSION_UNKNOWN = 1353, + + /** + * The exchange failed to retrieve valid session data from the + * database. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_REFRESH_REVEAL_DB_FETCH_SESSION_ERROR = 1354, + + /** + * The exchange failed to retrieve order data from the + * database. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_REFRESH_REVEAL_DB_FETCH_ORDER_ERROR = 1355, + + /** + * The exchange failed to retrieve transfer keys from the + * database. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_REFRESH_REVEAL_DB_FETCH_TRANSFER_ERROR = 1356, + + /** + * The exchange failed to retrieve commitment data from the + * database. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_ERROR. + */ + TALER_EC_REFRESH_REVEAL_DB_FETCH_COMMIT_ERROR = 1357, + + /** + * The size of the cut-and-choose dimension of the + * private transfer keys request does not match #TALER_CNC_KAPPA - 1. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_REFRESH_REVEAL_CNC_TRANSFER_ARRAY_SIZE_INVALID = 1358, + + + /** + * The coin specified in the link request is unknown to the exchange. + * This response is provided with HTTP status code + * MHD_HTTP_NOT_FOUND. + */ + TALER_EC_REFRESH_LINK_COIN_UNKNOWN = 1400, + + + /** + * The exchange knows literally nothing about the coin we were asked + * to refund. But without a transaction history, we cannot issue a + * refund. This is kind-of OK, the owner should just refresh it + * directly without executing the refund. This response is provided + * with HTTP status code MHD_HTTP_NOT_FOUND. + */ + TALER_EC_REFUND_COIN_NOT_FOUND = 1500, + + /** + * We could not process the refund request as the coin's transaction + * history does not permit the requested refund at this time. The + * "history" in the response proves this. This response is provided + * with HTTP status code MHD_HTTP_CONFLICT. + */ + TALER_EC_REFUND_CONFLICT = 1501, + + /** + * The exchange knows about the coin we were asked to refund, but + * not about the specific /deposit operation. Hence, we cannot + * issue a refund (as we do not know if this merchant public key is + * authorized to do a refund). This response is provided with HTTP + * status code MHD_HTTP_NOT_FOUND. + */ + TALER_EC_REFUND_DEPOSIT_NOT_FOUND = 1503, + + /** + * The currency specified for the refund is different from + * the currency of the coin. This response is provided with HTTP + * status code MHD_HTTP_PRECONDITION_FAILED. + */ + TALER_EC_REFUND_CURRENCY_MISSMATCH = 1504, + + /** + * When we tried to check if we already paid out the coin, the + * exchange's database suddenly disagreed with data it previously + * provided (internal inconsistency). + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_REFUND_DB_INCONSISTENT = 1505, + + /** + * The exchange can no longer refund the customer/coin as the + * money was already transferred (paid out) to the merchant. + * (It should be past the refund deadline.) + * This response is provided with HTTP status code + * MHD_HTTP_GONE. + */ + TALER_EC_REFUND_MERCHANT_ALREADY_PAID = 1506, + + /** + * The amount the exchange was asked to refund exceeds + * (with fees) the total amount of the deposit (including fees). + * This response is provided with HTTP status code + * MHD_HTTP_PRECONDITION_FAILED. + */ + TALER_EC_REFUND_INSUFFICIENT_FUNDS = 1507, + + /** + * The exchange failed to recover information about the + * denomination key of the refunded coin (even though it + * recognizes the key). Hence it could not check the fee + * strucutre. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_REFUND_DENOMINATION_KEY_NOT_FOUND = 1508, + + /** + * The refund fee specified for the request is lower than + * the refund fee charged by the exchange for the given + * denomination key of the refunded coin. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_REFUND_FEE_TOO_LOW = 1509, + + /** + * The exchange failed to store the refund information to + * its database. + * This response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_REFUND_STORE_DB_ERROR = 1510, + + /** + * The refund fee is specified in a different currency + * than the refund amount. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_REFUND_FEE_CURRENCY_MISSMATCH = 1511, + + /** + * The refunded amount is smaller than the refund fee, + * which would result in a negative refund. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_REFUND_FEE_ABOVE_AMOUNT = 1512, + + /** + * The signature of the merchant is invalid. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_REFUND_MERCHANT_SIGNATURE_INVALID = 1513, + + + /** + * The wire format specified in the "sender_account_details" + * is not understood or not supported by this exchange. + * Returned with an HTTP status code of MHD_HTTP_NOT_FOUND. + * (As we did not find an interpretation of the wire format.) + */ + TALER_EC_ADMIN_ADD_INCOMING_WIREFORMAT_UNSUPPORTED = 1600, + + /** + * The currency specified in the "amount" parameter is not + * supported by this exhange. Returned with an HTTP status + * code of MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_ADMIN_ADD_INCOMING_CURRENCY_UNSUPPORTED = 1601, + + /** + * The exchange failed to store information about the incoming + * transfer in its database. This response is provided with HTTP + * status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_ADMIN_ADD_INCOMING_DB_STORE = 1602, + + /** + * The exchange encountered an error (that is not about not finding + * the wire transfer) trying to lookup a wire transfer identifier + * in the database. This response is provided with HTTP + * status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TRACK_TRANSFER_DB_FETCH_FAILED = 1700, + + /** + * The exchange found internally inconsistent data when resolving a + * wire transfer identifier in the database. This response is + * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TRACK_TRANSFER_DB_INCONSISTENT = 1701, + + /** + * The exchange did not find information about the specified + * wire transfer identifier in the database. This response is + * provided with HTTP status code MHD_HTTP_NOT_FOUND. + */ + TALER_EC_TRACK_TRANSFER_WTID_NOT_FOUND = 1702, + + + /** + * The exchange found internally inconsistent fee data when + * resolving a transaction in the database. This + * response is provided with HTTP status code + * MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TRACK_TRANSACTION_DB_FEE_INCONSISTENT = 1800, + + /** + * The exchange encountered an error (that is not about not finding + * the transaction) trying to lookup a transaction + * in the database. This response is provided with HTTP + * status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TRACK_TRANSACTION_DB_FETCH_FAILED = 1801, + + /** + * The exchange did not find information about the specified + * transaction in the database. This response is + * provided with HTTP status code MHD_HTTP_NOT_FOUND. + */ + TALER_EC_TRACK_TRANSACTION_NOT_FOUND = 1802, + + /** + * The exchange failed to identify the wire transfer of the + * transaction (or information about the plan that it was supposed + * to still happen in the future). This response is provided with + * HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TRACK_TRANSACTION_WTID_RESOLUTION_ERROR = 1803, + + /** + * The signature of the merchant is invalid. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_TRACK_TRANSACTION_MERCHANT_SIGNATURE_INVALID = 1804, + + + /* *********** Merchant backend error codes ********* */ + + /** + * The backend could not find the merchant instance specified + * in the request. This response is + * provided with HTTP status code MHD_HTTP_NOT_FOUND. + */ + TALER_EC_CONTRACT_INSTANCE_UNKNOWN = 2000, + + /** + * The exchange failed to provide a meaningful response + * to a /deposit request. This response is provided + * with HTTP status code MHD_HTTP_SERVICE_UNAVAILABLE. + */ + TALER_EC_PAY_EXCHANGE_FAILED = 2101, + + /** + * The merchant failed to commit the exchanges' response to + * a /deposit request to its database. This response is provided + * with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_PAY_DB_STORE_PAY_ERROR = 2102, + + /** + * The specified exchange is not supported/trusted by + * this merchant. This response is provided + * with HTTP status code MHD_HTTP_PRECONDITION_FAILED. + */ + TALER_EC_PAY_EXCHANGE_REJECTED = 2103, + + /** + * The denomination key used for payment is not listed among the + * denomination keys of the exchange. This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_PAY_DENOMINATION_KEY_NOT_FOUND = 2104, + + /** + * The denomination key used for payment is not audited by an + * auditor approved by the merchant. This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_PAY_DENOMINATION_KEY_AUDITOR_FAILURE = 2105, + + /** + * There was an integer overflow totaling up the amounts or + * deposit fees in the payment. This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_PAY_AMOUNT_OVERFLOW = 2106, + + /** + * The deposit fees exceed the total value of the payment. + * This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_PAY_FEES_EXCEED_PAYMENT = 2107, + + /** + * After considering deposit fees, the payment is insufficient + * to satisfy the required amount for the contract. + * This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_PAY_PAYMENT_INSUFFICIENT_DUE_TO_FEES = 2108, + + /** + * While the merchant is happy to cover all applicable deposit fees, + * the payment is insufficient to satisfy the required amount for + * the contract. This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_PAY_PAYMENT_INSUFFICIENT = 2109, + + /** + * The signature over the contract of one of the coins + * was invalid. This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_PAY_COIN_SIGNATURE_INVALID = 2110, + + /** + * We failed to contact the exchange for the /pay request. + * This response is provided + * with HTTP status code MHD_HTTP_SERVICE_UNAVAILABLE. + */ + TALER_EC_PAY_EXCHANGE_TIMEOUT = 2111, + + /** + * The backend could not find the merchant instance specified + * in the request. This response is + * provided with HTTP status code MHD_HTTP_NOT_FOUND. + */ + TALER_EC_PAY_INSTANCE_UNKNOWN = 2112, + + /** + * The signature over the contract of the merchant + * was invalid. This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_PAY_MERCHANT_SIGNATURE_INVALID = 2113, + + /** + * The refund deadline was after the transfer deadline. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_PAY_REFUND_DEADLINE_PAST_WIRE_TRANSFER_DEADLINE = 2114, + + /** + * The request fails to provide coins for the payment. + * This response is provided with HTTP status code + * MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_PAY_COINS_ARRAY_EMPTY = 2115, + + /** + * The merchant failed to fetch the merchant's previous state with + * respect to a /pay request from its database. This response is + * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_PAY_DB_FETCH_PAY_ERROR = 2116, + + /** + * The merchant failed to fetch the merchant's previous state with + * respect to transactions from its database. This response is + * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_PAY_DB_FETCH_TRANSACTION_ERROR = 2117, + + /** + * The transaction ID was used for a conflicing transaction before. + * This response is + * provided with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_PAY_DB_TRANSACTION_ID_CONFLICT = 2118, + + /** + * The merchant failed to store the merchant's state with + * respect to the transaction in its database. This response is + * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_PAY_DB_STORE_TRANSACTION_ERROR = 2119, + + /** + * The exchange failed to provide a valid response to + * the merchant's /keys request. + * This response is provided + * with HTTP status code MHD_HTTP_SERVICE_UNAVAILABLE. + */ + TALER_EC_PAY_EXCHANGE_KEYS_FAILURE = 2120, + + /** + * The payment is too late, the offer has expired. + * This response is + * provided with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_PAY_OFFER_EXPIRED = 2121, + + + /** + * Integer overflow with sepcified timestamp argument detected. + * This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_HISTORY_TIMESTAMP_OVERFLOW = 2200, + + /** + * Failed to retrieve history from merchant database. + * This response is provided + * with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_HISTORY_DB_FETCH_ERROR = 2201, + + /** + * We failed to contact the exchange for the /track/transaction + * request. This response is provided with HTTP status code + * MHD_HTTP_SERVICE_UNAVAILABLE. + */ + TALER_EC_TRACK_TRANSACTION_EXCHANGE_TIMEOUT = 2300, + + /** + * The backend could not find the merchant instance specified + * in the request. This response is + * provided with HTTP status code MHD_HTTP_NOT_FOUND. + */ + TALER_EC_TRACK_TRANSACTION_INSTANCE_UNKNOWN = 2301, + + /** + * The backend could not find the transaction specified + * in the request. This response is + * provided with HTTP status code MHD_HTTP_NOT_FOUND. + */ + TALER_EC_TRACK_TRANSACTION_TRANSACTION_UNKNOWN = 2302, + + /** + * The backend had a database access error trying to + * retrieve transaction data from its database. + * The response is + * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TRACK_TRANSACTION_DB_FETCH_TRANSACTION_ERROR = 2303, + + /** + * The backend had a database access error trying to + * retrieve payment data from its database. + * The response is + * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TRACK_TRANSACTION_DB_FETCH_PAYMENT_ERROR = 2304, + + /** + * The backend found no applicable deposits in the database. + * This is odd, as we know about the transaction, but not + * about deposits we made for the transaction. The response is + * provided with HTTP status code MHD_HTTP_NOT_FOUND. + */ + TALER_EC_TRACK_TRANSACTION_DB_NO_DEPOSITS_ERROR = 2305, + + /** + * We failed to obtain a wire transfer identifier for one + * of the coins in the transaction. The response is + * provided with HTTP status code MHD_HTTP_FAILED_DEPENDENCY if + * the exchange had a hard error, or MHD_HTTP_ACCEPTED if the + * exchange signaled that the transfer was in progress. + */ + TALER_EC_TRACK_TRANSACTION_COIN_TRACE_ERROR = 2306, + + /** + * We failed to obtain the full wire transfer identifier for the + * transfer one of the coins was aggregated into. + * The response is + * provided with HTTP status code MHD_HTTP_FAILED_DEPENDENCY. + */ + TALER_EC_TRACK_TRANSACTION_WIRE_TRANSFER_TRACE_ERROR = 2307, + + /** + * We got conflicting reports from the exhange with + * respect to which transfers are included in which + * aggregate. + * The response is + * provided with HTTP status code MHD_HTTP_FAILED_DEPENDENCY. + */ + TALER_EC_TRACK_TRANSACTION_CONFLICTING_REPORTS = 2308, + + + /** + * We failed to contact the exchange for the /track/transfer + * request. This response is provided with HTTP status code + * MHD_HTTP_SERVICE_UNAVAILABLE. + */ + TALER_EC_TRACK_TRANSFER_EXCHANGE_TIMEOUT = 2400, + + /** + * The backend could not find the merchant instance specified + * in the request. This response is + * provided with HTTP status code MHD_HTTP_NOT_FOUND. + */ + TALER_EC_TRACK_TRANSFER_INSTANCE_UNKNOWN = 2401, + + /** + * We failed to persist coin wire transfer information in + * our merchant database. + * The response is + * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TRACK_TRANSFER_DB_STORE_COIN_ERROR = 2402, + + /** + * We internally failed to execute the /track/transfer request. + * The response is + * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TRACK_TRANSFER_REQUEST_ERROR = 2403, + + /** + * We failed to persist wire transfer information in + * our merchant database. + * The response is + * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TRACK_TRANSFER_DB_STORE_TRANSFER_ERROR = 2404, + + /** + * The exchange returned an error from /track/transfer. + * The response is + * provided with HTTP status code MHD_HTTP_FAILED_DEPENDENCY. + */ + TALER_EC_TRACK_TRANSFER_EXCHANGE_ERROR = 2405, + + /** + * We failed to fetch deposit information from + * our merchant database. + * The response is + * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TRACK_TRANSFER_DB_FETCH_DEPOSIT_ERROR = 2406, + + /** + * We encountered an internal logic error. + * The response is + * provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TRACK_TRANSFER_DB_INTERNAL_LOGIC_ERROR = 2407, + + /** + * The exchange gave conflicting information about a coin which has + * been wire transferred. + * The response is provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TRACK_TRANSFER_CONFLICTING_REPORTS = 2408, + + /** + * The hash provided in the request of /map/in does not match + * the contract sent alongside in the same request. + */ + TALER_EC_MAP_IN_UNMATCHED_HASH = 2500, + + /** + * The backend encountered an error while trying to store the + * pair into the database. + * The response is provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_MAP_IN_STORE_DB_ERROR = 2501, + + /** + * The backend encountered an error while trying to retrieve the + * contract from database. Likely to be an internal error. + */ + TALER_EC_MAP_OUT_GET_FROM_DB_ERROR = 2502, + + + /** + * The backend encountered an error while trying to retrieve the + * contract from database. Likely to be an internal error. + */ + TALER_EC_MAP_OUT_CONTRACT_UNKNOWN = 2503, + + /* ********** /test API error codes ************* */ + + /** + * The exchange failed to compute ECDH. This response is provided + * with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TEST_ECDH_ERROR = 4000, + + /** + * The EdDSA test signature is invalid. This response is provided + * with HTTP status code MHD_HTTP_BAD_REQUEST. + */ + TALER_EC_TEST_EDDSA_INVALID = 4001, + + /** + * The exchange failed to compute the EdDSA test signature. This response is provided + * with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TEST_EDDSA_ERROR = 4002, + + /** + * The exchange failed to generate an RSA key. This response is provided + * with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TEST_RSA_GEN_ERROR = 4003, + + /** + * The exchange failed to compute the public RSA key. This response + * is provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TEST_RSA_PUB_ERROR = 4004, + + /** + * The exchange failed to compute the RSA signature. This response + * is provided with HTTP status code MHD_HTTP_INTERNAL_SERVER_ERROR. + */ + TALER_EC_TEST_RSA_SIGN_ERROR = 4005, + + + /** + * End of error code range. + */ + TALER_EC_END = 9999 + }; diff --git a/api-merchant.rst b/api-merchant.rst index 00b4e067..8df7ead1 100644 --- a/api-merchant.rst +++ b/api-merchant.rst @@ -283,7 +283,7 @@ The following API are made available by the merchant's `backend` to the merchant .. code-block:: tsref interface TrackTransferConflictDetails { - // Numerical error code + // Numerical `error code `_ code: number; // Text describing the issue for humans. diff --git a/dev-merchant.rst b/dev-merchant.rst index 275c5481..e4cd4cbc 100644 --- a/dev-merchant.rst +++ b/dev-merchant.rst @@ -17,6 +17,7 @@ Merchant ======== .. _merchant-arch: + ------ Design ------ -- cgit v1.2.3