taler-docs

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

commit 818fb71a1b952942867d8e2d7f336ca9794246b9
parent 0e8b95740ab97ebd8c2eaf85f68e7cc8076776fa
Author: Cedric Zwahlen <cedric.zwahlen@students.bfh.ch>
Date:   Tue, 28 May 2024 20:43:52 +0200

Add descriptions to Monitoring API

Diffstat:
Mcore/api-auditor.rst | 1004+++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------
1 file changed, 652 insertions(+), 352 deletions(-)

diff --git a/core/api-auditor.rst b/core/api-auditor.rst @@ -209,7 +209,7 @@ paid out first. .. _spa-api: --------------------------- -Single Page Application API +Monitoring API --------------------------- The following entries specify how to access the results of an audit. @@ -222,14 +222,13 @@ To do this, a :ts:type:`GenericUpdate` object may be used. .. ts:def:: GenericUpdate interface GenericUpdate { - // the row_id of a respective table that should be changed - row_id: Integer; - // if true, subsequent GET requests will not, by default, receive the row specified in row_id. - suppressed: boolean; + // if true, subsequent GET requests will not this element by default + suppressed : boolean; - // unused - ancient?: boolean; + // unused + ancient? : boolean; + } @@ -239,9 +238,13 @@ To do this, a :ts:type:`GenericUpdate` object may be used. Fee Time Inconsistencies ------------------------ -This API is used to obtain a list of fee time inconsistencies +This section highlights cases, where validity periods associated with wire fees the +exchange may charge merchants, are invalid. +This usually means that a start date of a fee is set to a later date than its end date. -.. http:get:: /fee-time-inconsistency +#FIXME: this might be inaccurate + +.. http:get:: /monitoring/fee-time-inconsistency Get a list of fee time inconsistencies stored by the auditor. @@ -272,11 +275,19 @@ This API is used to obtain a list of fee time inconsistencies .. ts:def:: FeeTimeInconsistency interface FeeTimeInconsistency { - row_id: Integer; - type: string; - time: Timestamp; - diagnostic: string; - suppressed: boolean; + + + row_id : Integer; + + type : string; + + time : Timestamp; + + diagnostic : string; + + suppressed : boolean; + + } .. note:: @@ -284,11 +295,13 @@ This API is used to obtain a list of fee time inconsistencies This API is still experimental. The API will be further developed as needed. + + This API is used to suppress select elements of fee time inconsistencies -.. http:patch:: /fee-time-inconsistency +.. http:patch:: /fee-time-inconsistency/$SERIAL_ID - Update the 'suppressed' field of an fee time inconsistency element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a fee time inconsistency element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -307,9 +320,20 @@ This API is used to suppress select elements of fee time inconsistencies Emergencies By Count -------------------- -This API is used to obtain a list of emergencies by count +This API is used to obtain a list of emergencies by count. -.. http:get:: /emergency-by-count +Emergencies are errors where more coins were deposited than the +exchange remembers issuing. This usually means that the private keys +of the exchange were compromised (stolen or factored) and subsequently +used to sign coins off the books. If this happens, all coins of the +respective denomination that the exchange has redeemed so far may have +been created by the attacker, and the exchange would have to refund +all of the outstanding coins from ordinary users. Thus, the risk +exposure is the amount of coins in circulation for a particular +denomination and the maximum loss for the exchange from this type of +compromise. + +.. http:get:: /monitoring/emergency-by-count Get a list of emergencies by count stored by the auditor. @@ -340,15 +364,27 @@ This API is used to obtain a list of emergencies by count .. ts:def:: EmergencyByCount interface EmergencyByCount { - row_id: Integer; - denompub_h: HashCode; - num_issued: Integer; - num_known: Integer; - risk: Amount; - start: Timestamp; - deposit_end: Timestamp; - value: Amount; - suppressed: boolean; + + + row_id : Integer; + + denompub_h : HashCode; + + num_issued : Integer; + + num_known : Integer; + + risk : Amount; + + start : Timestamp; + + deposit_end : Timestamp; + + value : Amount; + + suppressed : boolean; + + } .. note:: @@ -360,9 +396,9 @@ This API is used to obtain a list of emergencies by count This API is used to suppress select elements of emergencies by count -.. http:patch:: /emergency-by-count +.. http:patch:: /emergency-by-count/$SERIAL_ID - Update the 'suppressed' field of an emergency by count element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of an emergency by count element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -381,9 +417,16 @@ This API is used to suppress select elements of emergencies by count Row Inconsistencies ------------------- -This API is used to obtain a list of row inconsistencies +This section highlights serious row inconsistencies of the exchange. +Row inconsistencies are reported from different sources, +and might point data that is (suddenly) missing from the exchange, or has been manipulated in +illogical ways. The affected table is noted in the 'table' field. A description of the nature of the +inconsistency is noted in 'diagnostic'. + +#FIXME: this might be inaccurate -.. http:get:: /row-inconsistency + +.. http:get:: /monitoring/row-inconsistency Get a list of row inconsistencies stored by the auditor. @@ -414,10 +457,17 @@ This API is used to obtain a list of row inconsistencies .. ts:def:: RowInconsistency interface RowInconsistency { - row_id: Integer; - row_table: string; - diagnostic: string; - suppressed: boolean; + + + row_id : Integer; + + row_table : string; + + diagnostic : string; + + suppressed : boolean; + + } .. note:: @@ -429,9 +479,9 @@ This API is used to obtain a list of row inconsistencies This API is used to suppress select elements of row inconsistencies -.. http:patch:: /row-inconsistency +.. http:patch:: /row-inconsistency/$SERIAL_ID - Update the 'suppressed' field of an row inconsistency element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a row inconsistency element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -452,7 +502,7 @@ Reserve In Inconsistencies This API is used to obtain a list of reserve in inconsistencies -.. http:get:: /reserve-in-inconsistency +.. http:get:: /monitoring/reserve-in-inconsistency Get a list of reserve in inconsistencies stored by the auditor. @@ -483,25 +533,39 @@ This API is used to obtain a list of reserve in inconsistencies .. ts:def:: ReserveInInconsistency interface ReserveInInconsistency { - row_id: Integer; - amount_exchange_expected: Amount; - amount_wired: Amount; - reserve_pub: EddsaPublicKey; - timestamp: Timestamp; - account: string; - diagnostic: string; - suppressed: boolean; + + + row_id : Integer; + + amount_exchange_expected : Amount; + + amount_wired : Amount; + + reserve_pub : EddsaPublicKey; + + timestamp : Timestamp; + + account : string; + + diagnostic : string; + + suppressed : boolean; + + } .. note:: This API is still experimental. The API will be further developed as needed. + + + This API is used to suppress select elements of reserve in inconsistencies -.. http:patch:: /reserve-in-inconsistency +.. http:patch:: /reserve-in-inconsistency/$SERIAL_ID - Update the 'suppressed' field of an reserve in inconsistency element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a reserve in inconsistency element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -512,14 +576,21 @@ This API is used to suppress select elements of reserve in inconsistencies This API is still experimental. The API will be further developed as needed. + + + .. purse-not-closed-inconsistencies-list: Purse Not Closed Inconsistencies -------------------------------- -This API is used to obtain a list of purse not closed inconsistencies +This section highlights cases, in which either payer or payee did not finish their part of a transaction, +causing a purse – which may contain some currency – to expire. + +#FIXME: this might be inaccurate -.. http:get:: /purse-not-closed-inconsistencies + +.. http:get:: /monitoring/purse-not-closed-inconsistencies Get a list of purse not closed inconsistencies stored by the auditor. @@ -550,11 +621,19 @@ This API is used to obtain a list of purse not closed inconsistencies .. ts:def:: PurseNotClosedInconsistencies interface PurseNotClosedInconsistencies { - row_id: Integer; - purse_pub: EddsaPublicKey; - amount: Amount; - expiration_date: Timestamp; - suppressed: boolean; + + + row_id : Integer; + + purse_pub : EddsaPublicKey; + + amount : Amount; + + expiration_date : Timestamp; + + suppressed : boolean; + + } .. note:: @@ -562,11 +641,13 @@ This API is used to obtain a list of purse not closed inconsistencies This API is still experimental. The API will be further developed as needed. + + This API is used to suppress select elements of purse not closed inconsistencies -.. http:patch:: /purse-not-closed-inconsistencies +.. http:patch:: /purse-not-closed-inconsistencies/$SERIAL_ID - Update the 'suppressed' field of an purse not closed inconsistencies element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a purse not closed inconsistencies element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -585,9 +666,9 @@ This API is used to suppress select elements of purse not closed inconsistencies Reserve Not Closed Inconsistencies ---------------------------------- -This API is used to obtain a list of reserve not closed inconsistencies +This section highlights cases, in which reserves were not closed, despite being expired. -.. http:get:: /reserve-not-closed-inconsistency +.. http:get:: /monitoring/reserve-not-closed-inconsistency Get a list of reserve not closed inconsistencies stored by the auditor. @@ -617,13 +698,22 @@ This API is used to obtain a list of reserve not closed inconsistencies .. ts:def:: ReserveNotClosedInconsistency - interface ReserveNotClosedInconsistency { - row_id: Integer; - reserve_pub: EddsaPublicKey; - balance: Amount; - expiration_time: Timestamp; - diagnostic: string; - suppressed: boolean; + interface ReserveNotClosedInconsistency { + + + row_id : Integer; + + reserve_pub : EddsaPublicKey; + + balance : Amount; + + expiration_time : Timestamp; + + diagnostic : string; + + suppressed : boolean; + + } .. note:: @@ -631,11 +721,13 @@ This API is used to obtain a list of reserve not closed inconsistencies This API is still experimental. The API will be further developed as needed. + + This API is used to suppress select elements of reserve not closed inconsistencies -.. http:patch:: /reserve-not-closed-inconsistency +.. http:patch:: /reserve-not-closed-inconsistency/$SERIAL_ID - Update the 'suppressed' field of an reserve not closed inconsistency element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a reserve not closed inconsistency element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -647,14 +739,20 @@ This API is used to suppress select elements of reserve not closed inconsistenci This API is still experimental. The API will be further developed as needed. + + .. reserve-balance-insufficient-inconsistency-list: Reserve Balance Insufficient Inconsistencies -------------------------------------------- -This API is used to obtain a list of reserve balance insufficient inconsistencies +This section highlights cases where more coins were withdrawn from a +reserve than the reserve contained funding for. This is a serious +compromise resulting in proportional financial losses to the exchange. -.. http:get:: /reserve-balance-insufficient-inconsistency +#FIXME: this might be inaccurate + +.. http:get:: /monitoring/reserve-balance-insufficient-inconsistency Get a list of reserve balance insufficient inconsistencies stored by the auditor. @@ -685,11 +783,19 @@ This API is used to obtain a list of reserve balance insufficient inconsistencie .. ts:def:: ReserveBalanceInsufficientInconsistency interface ReserveBalanceInsufficientInconsistency { - row_id: Integer; - reserve_pub: EddsaPublicKey; - inconsistency_gain: boolean; - inconsistency_amount: Amount; - suppressed: boolean; + + + row_id : Integer; + + reserve_pub : EddsaPublicKey; + + inconsistency_gain : boolean; + + inconsistency_amount : Amount; + + suppressed : boolean; + + } .. note:: @@ -701,9 +807,9 @@ This API is used to obtain a list of reserve balance insufficient inconsistencie This API is used to suppress select elements of reserve balance insufficient inconsistencies -.. http:patch:: /reserve-balance-insufficient-inconsistency +.. http:patch:: /reserve-balance-insufficient-inconsistency/$SERIAL_ID - Update the 'suppressed' field of an reserve balance insufficient inconsistency element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a reserve balance insufficient inconsistency element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -717,16 +823,18 @@ This API is used to suppress select elements of reserve balance insufficient inc -.. bad-sig-losses-list: +.. invalid-signature-losses-list: -Bad Sig Losses +Invalid Signature Losses -------------- -This API is used to obtain a list of bad sig losses +This section lists operations that the exchange performed, but for +which the signatures provided are invalid. Hence the operations were +invalid and the amount involved should be considered lost. -.. http:get:: /bad-sig-losses +.. http:get:: /monitoring/bad-sig-losses - Get a list of bad sig losses stored by the auditor. + Get a list of invalid signature losses stored by the auditor. The following query parameters are optional, and can be used to customise the response: @@ -757,11 +865,19 @@ This API is used to obtain a list of bad sig losses .. ts:def:: BadSigLosses interface BadSigLosses { - row_id: Integer; - operation: string; - loss: Amount; - operation_specific_pub: EddsaPublicKey; - suppressed: boolean; + + + row_id : Integer; + + operation : string; + + loss : Amount; + + operation_specific_pub : EddsaPublicKey; + + suppressed : boolean; + + } .. note:: @@ -773,9 +889,9 @@ This API is used to obtain a list of bad sig losses This API is used to suppress select elements of bad sig losses -.. http:patch:: /bad-sig-losses +.. http:patch:: /bad-sig-losses/$SERIAL_ID - Update the 'suppressed' field of an bad sig losses element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a bad sig losses element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -796,10 +912,16 @@ Coin Inconsistencies This API is used to obtain a list of coin inconsistencies -.. http:get:: /coin-inconsistency +.. http:get:: /monitoring/coin-inconsistency Get a list of coin inconsistencies stored by the auditor. + This section lists cases where the exchange made arithmetic errors found when + looking at the transaction history of a coin. The totals sum up the differences + in amounts that matter for profit/loss calculations of the exchange. When an + exchange merely shifted money from customers to merchants (or vice versa) without + any effects on its own balance, those entries are excluded from the total. + The following query parameters are optional, and can be used to customise the response: **Request:** @@ -827,13 +949,23 @@ This API is used to obtain a list of coin inconsistencies .. ts:def:: CoinInconsistency interface CoinInconsistency { - row_id: Integer; - operation: string; - exchange_amount: Amount; - auditor_amount: Amount; - coin_pub: EddsaPublicKey; - profitable: boolean; - suppressed: boolean; + + + row_id : Integer; + + operation : string; + + exchange_amount : Amount; + + auditor_amount : Amount; + + coin_pub : EddsaPublicKey; + + profitable : boolean; + + suppressed : boolean; + + } .. note:: @@ -845,9 +977,9 @@ This API is used to obtain a list of coin inconsistencies This API is used to suppress select elements of coin inconsistencies -.. http:patch:: /coin-inconsistency +.. http:patch:: /coin-inconsistency/$SERIAL_ID - Update the 'suppressed' field of an coin inconsistency element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a coin inconsistency element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -866,9 +998,13 @@ This API is used to suppress select elements of coin inconsistencies Balances -------- -This API is used to obtain a list of balances +Unlike many other sections of the auditor, entries in the balances table do not necessarily represent misbehaviour +or unusual findings. Instead, the auditor keeps its own record of the current balances of purses, to compare them with the +purse balances. + +#FIXME: this might be inaccurate -.. http:get:: /balances +.. http:get:: /monitoring/balances Get a list of balances stored by the auditor. @@ -900,10 +1036,17 @@ This API is used to obtain a list of balances .. ts:def:: Balances interface Balances { - row_id: Integer; - balance_key: string; - balance_value: Amount; - suppressed: boolean; + + + row_id : Integer; + + balance_key : string; + + balance_value : Amount; + + suppressed : boolean; + + } .. note:: @@ -915,9 +1058,9 @@ This API is used to obtain a list of balances This API is used to suppress select elements of balances -.. http:patch:: /balances +.. http:patch:: /balances/$SERIAL_ID - Update the 'suppressed' field of an balances element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a balances element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -931,16 +1074,21 @@ This API is used to suppress select elements of balances -.. denominations-without-sigs-list: +.. denominations-without-signatures-list: -Denominations Without Sigs --------------------------- +Denominations Without Signatures +-------------------------------- -This API is used to obtain a list of denominations without sigs +This section highlights denomination keys that lack a proper +signature from the taler-auditor-offline tool. This may be +legitimate, say in case where the auditor's involvement in the +exchange business is ending and a new auditor is responsible for +future denominations. So this must be read with a keen eye on the +business situation. -.. http:get:: /denominations-without-sigs +.. http:get:: /monitoring/denominations-without-sigs - Get a list of denominations without sigs stored by the auditor. + Get a list of denominations without signatures stored by the auditor. The following query parameters are optional, and can be used to customise the response: @@ -969,12 +1117,21 @@ This API is used to obtain a list of denominations without sigs .. ts:def:: DenominationsWithoutSigs interface DenominationsWithoutSigs { - row_id: Integer; - denompub_h: HashCode; - value: Amount; - start_time: Timestamp; - end_time: Timestamp; - suppressed: boolean; + + + row_id : Integer; + + denompub_h : HashCode; + + value : Amount; + + start_time : Timestamp; + + end_time : Timestamp; + + suppressed : boolean; + + } .. note:: @@ -986,9 +1143,9 @@ This API is used to obtain a list of denominations without sigs This API is used to suppress select elements of denominations without sigs -.. http:patch:: /denominations-without-sigs +.. http:patch:: /denominations-without-sigs/$SERIAL_ID - Update the 'suppressed' field of an denominations without sigs element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a denominations without signatures element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -1007,9 +1164,15 @@ This API is used to suppress select elements of denominations without sigs Misattribution In Inconsistencies --------------------------------- -This API is used to obtain a list of misattribution in inconsistencies +This section lists cases where the sender account record of an +incoming wire transfer differs between the exchange and the bank. +This will cause funds to be sent to the wrong account when the reserve +is closed and the remaining balance is refunded to the original +account. -.. http:get:: /misattribution-in-inconsistency +#FIXME: not sure if this is accurate + +.. http:get:: /monitoring/misattribution-in-inconsistency Get a list of misattribution in inconsistencies stored by the auditor. @@ -1040,11 +1203,19 @@ This API is used to obtain a list of misattribution in inconsistencies .. ts:def:: MisattributionInInconsistency interface MisattributionInInconsistency { - row_id: Integer; - amount: Amount; - bank_row: Integer; - reserve_pub: EddsaPublicKey; - suppressed: boolean; + + + row_id : Integer; + + amount : Amount; + + bank_row : Integer; + + reserve_pub : EddsaPublicKey; + + suppressed : boolean; + + } .. note:: @@ -1056,9 +1227,9 @@ This API is used to obtain a list of misattribution in inconsistencies This API is used to suppress select elements of misattribution in inconsistencies -.. http:patch:: /misattribution-in-inconsistency +.. http:patch:: /misattribution-in-inconsistency/$SERIAL_ID - Update the 'suppressed' field of an misattribution in inconsistency element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of an misattribution in inconsistency element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -1069,19 +1240,19 @@ This API is used to suppress select elements of misattribution in inconsistencie This API is still experimental. The API will be further developed as needed. +.. reserves-list: -.. progress-list: -Progress +Reserves -------- -This API is used to obtain a list of progress +This API is used to obtain a list of reserves -.. http:get:: /progress +.. http:get:: /monitoring/reserves - Get a list of progress stored by the auditor. + Get a list of reserves stored by the auditor. The following query parameters are optional, and can be used to customise the response: @@ -1097,7 +1268,7 @@ This API is used to obtain a list of progress **Response:** :http:statuscode:`200 OK`: - The auditor responds with a top level array of :ts:type:`Progress` objecs. + The auditor responds with a top level array of :ts:type:`Reserves` objecs. :http:statuscode:`403 Forbidden`: No or bad Bearer token provided. @@ -1107,89 +1278,36 @@ This API is used to obtain a list of progress **Details:** - .. ts:def:: Progress - - interface Progress { - progress_key: string; - progress_offset: Integer; - suppressed: boolean; - } - - .. note:: - - This API is still experimental. The API will be further developed as needed. - - - - -This API is used to suppress select elements of progress - -.. http:patch:: /progress - - Update the 'suppressed' field of an progress element according to :ts:type:`GenericUpdate`, stored by the auditor. - - **Response:** - - :http:statuscode:`202 Accepted`: - The element has been accepted for processing. - - .. note:: - - This API is still experimental. The API will be further developed as needed. - - - - -.. reserves-list: - -Reserves --------- + .. ts:def:: Reserves -This API is used to obtain a list of reserves + interface Reserves { -.. http:get:: /reserves + + auditor_reserves_rowid : Integer; - Get a list of reserves stored by the auditor. + reserve_pub : EddsaPublicKey; - The following query parameters are optional, and can be used to customise the response: + reserve_balance : Amount; - **Request:** + reserve_loss : Amount; - :query limit: A signed integer, indicating how many elements relative to the offset query parameter should be returned. The default value is -20. - :query offset: An unsigned integer, indicating from which row onward to return elements. The default value is INT_MAX. - :query return_suppressed: A boolean. If true, returns all eligible rows, otherwise only returns eligible rows that are not suppressed. The default value is false. - + withdraw_fee_balance : Amount; - The default values, thus, return at max the 20 latest elements that are not suppressed. + close_fee_balance : Amount; - **Response:** + purse_fee_balance : Amount; - :http:statuscode:`200 OK`: - The auditor responds with a top level array of :ts:type:`Reserves` objecs. + open_fee_balance : Amount; - :http:statuscode:`403 Forbidden`: - No or bad Bearer token provided. + history_fee_balance : Amount; - :http:statuscode:`404 Not Found`: - No elements could be found. + expiration_date : Timestamp; - **Details:** + origin_account : string; - .. ts:def:: Reserves + suppressed : boolean; - interface Reserves { - auditor_reserves_rowid: Integer; - reserve_pub: EddsaPublicKey; - reserve_balance: Amount; - reserve_loss: Amount; - withdraw_fee_balance: Amount; - close_fee_balance: Amount; - purse_fee_balance: Amount; - open_fee_balance: Amount; - history_fee_balance: Amount; - expiration_date: Timestamp; - origin_account: string; - suppressed: boolean; + } .. note:: @@ -1201,9 +1319,9 @@ This API is used to obtain a list of reserves This API is used to suppress select elements of reserves -.. http:patch:: /reserves +.. http:patch:: /reserves/$SERIAL_ID - Update the 'suppressed' field of an reserves element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of an reserves element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -1224,7 +1342,7 @@ Deposit Confirmations This API is used to obtain a list of deposit confirmations -.. http:get:: /deposit-confirmations +.. http:get:: /monitoring/deposit-confirmations Get a list of deposit confirmations stored by the auditor. @@ -1255,22 +1373,41 @@ This API is used to obtain a list of deposit confirmations .. ts:def:: DepositConfirmations interface DepositConfirmations { - deposit_confirmation_serial_id: Integer; - h_contract_terms: HashCode; - h_policy: HashCode; - h_wire: HashCode; - exchange_timestamp: Timestamp; - refund_deadline: Timestamp; - wire_deadline: Timestamp; - total_without_fee: Amount; - coin_pubs: EddsaPublicKey; - coin_sigs: EddsaSignature; - merchant_pub: EddsaPublicKey; - exchange_sig: EddsaSignature; - exchange_pub: EddsaPublicKey; - master_sig: EddsaSignature; - suppressed: boolean; - ancient: boolean; + + + deposit_confirmation_serial_id : Integer; + + h_contract_terms : HashCode; + + h_policy : HashCode; + + h_wire : HashCode; + + exchange_timestamp : Timestamp; + + refund_deadline : Timestamp; + + wire_deadline : Timestamp; + + total_without_fee : Amount; + + coin_pubs : EddsaPublicKey; + + coin_sigs : EddsaSignature; + + merchant_pub : EddsaPublicKey; + + exchange_sig : EddsaSignature; + + exchange_pub : EddsaPublicKey; + + master_sig : EddsaSignature; + + suppressed : boolean; + + ancient : boolean; + + } .. note:: @@ -1282,9 +1419,9 @@ This API is used to obtain a list of deposit confirmations This API is used to suppress select elements of deposit confirmations -.. http:patch:: /deposit-confirmations +.. http:patch:: /deposit-confirmations/$SERIAL_ID - Update the 'suppressed' field of an deposit confirmations element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of an deposit confirmations element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -1326,9 +1463,12 @@ This API is used by the auditor to delete an audited deposit confirmation. Denomination Key Validity Withdraw Inconsistencies -------------------------------------------------- -This API is used to obtain a list of denomination key validity withdraw inconsistencies +This section highlights cases, where denomination keys were used to withdraw coins from a reserve, +after they were already expired. -.. http:get:: /denomination-key-validity-withdraw-inconsistency +#FIXME: this might be inaccurate + +.. http:get:: /monitoring/denomination-key-validity-withdraw-inconsistency Get a list of denomination key validity withdraw inconsistencies stored by the auditor. @@ -1359,11 +1499,19 @@ This API is used to obtain a list of denomination key validity withdraw inconsis .. ts:def:: DenominationKeyValidityWithdrawInconsistency interface DenominationKeyValidityWithdrawInconsistency { - row_id: Integer; - execution_date: Timestamp; - reserve_pub: EddsaPublicKey; - denompub_h: HashCode; - suppressed: boolean; + + + row_id : Integer; + + execution_date : Timestamp; + + reserve_pub : EddsaPublicKey; + + denompub_h : HashCode; + + suppressed : boolean; + + } .. note:: @@ -1375,9 +1523,9 @@ This API is used to obtain a list of denomination key validity withdraw inconsis This API is used to suppress select elements of denomination key validity withdraw inconsistencies -.. http:patch:: /denomination-key-validity-withdraw-inconsistency +.. http:patch:: /denomination-key-validity-withdraw-inconsistency/$SERIAL_ID - Update the 'suppressed' field of an denomination key validity withdraw inconsistency element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a denomination key validity withdraw inconsistency element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -1396,9 +1544,12 @@ This API is used to suppress select elements of denomination key validity withdr Purses ------ -This API is used to obtain a list of purses +This section highlights cases, in which a purses summary (balance) does +not match the balance an exchange expects it to be. + +#FIXME: this might be inaccurate -.. http:get:: /purses +.. http:get:: /monitoring/purses Get a list of purses stored by the auditor. @@ -1429,12 +1580,21 @@ This API is used to obtain a list of purses .. ts:def:: Purses interface Purses { - auditor_purses_rowid: Integer; - purse_pub: EddsaPublicKey; - balance: Amount; - target: Amount; - expiration_date: Timestamp; - suppressed: boolean; + + + auditor_purses_rowid : Integer; + + purse_pub : EddsaPublicKey; + + balance : Amount; + + target : Amount; + + expiration_date : Timestamp; + + suppressed : boolean; + + } .. note:: @@ -1446,9 +1606,9 @@ This API is used to obtain a list of purses This API is used to suppress select elements of purses -.. http:patch:: /purses +.. http:patch:: /purses/$SERIAL_ID - Update the 'suppressed' field of an purses element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a purses element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -1469,7 +1629,16 @@ Amount Arithmetic Inconsistencies This API is used to obtain a list of amount arithmetic inconsistencies -.. http:get:: /amount-arithmetic-inconsistency +This section lists cases where the arithmetic of the exchange +involving amounts disagrees with the arithmetic of the auditor. +Disagreements imply that either the exchange made a loss (sending out +too much money), or screwed a customer (and thus at least needs to fix +the financial damage done to the customer). +The profitable column is set to true if the arithmetic problem was be determined to be +profitable for the exchange, false if the problem resulted in a net loss for +the exchange. + +.. http:get:: /monitoring/amount-arithmetic-inconsistency Get a list of amount arithmetic inconsistencies stored by the auditor. @@ -1500,12 +1669,21 @@ This API is used to obtain a list of amount arithmetic inconsistencies .. ts:def:: AmountArithmeticInconsistency interface AmountArithmeticInconsistency { - row_id: Integer; - operation: string; - exchange_amount: Amount; - auditor_amount: Amount; - profitable: boolean; - suppressed: boolean; + + + row_id : Integer; + + operation : string; + + exchange_amount : Amount; + + auditor_amount : Amount; + + profitable : boolean; + + suppressed : boolean; + + } .. note:: @@ -1517,9 +1695,9 @@ This API is used to obtain a list of amount arithmetic inconsistencies This API is used to suppress select elements of amount arithmetic inconsistencies -.. http:patch:: /amount-arithmetic-inconsistency +.. http:patch:: /amount-arithmetic-inconsistency/$SERIAL_ID - Update the 'suppressed' field of an amount arithmetic inconsistency element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of an amount arithmetic inconsistency element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -1540,7 +1718,7 @@ Historic Denomination Revenue This API is used to obtain a list of historic denomination revenue -.. http:get:: /historic-denomination-revenue +.. http:get:: /monitoring/historic-denomination-revenue Get a list of historic denomination revenue stored by the auditor. @@ -1571,11 +1749,19 @@ This API is used to obtain a list of historic denomination revenue .. ts:def:: HistoricDenominationRevenue interface HistoricDenominationRevenue { - denom_pub_hash: HashCode; - revenue_timestamp: Timestamp; - revenue_balance: Amount; - loss_balance: Amount; - suppressed: boolean; + + + denom_pub_hash : HashCode; + + revenue_timestamp : Timestamp; + + revenue_balance : Amount; + + loss_balance : Amount; + + suppressed : boolean; + + } .. note:: @@ -1587,9 +1773,9 @@ This API is used to obtain a list of historic denomination revenue This API is used to suppress select elements of historic denomination revenue -.. http:patch:: /historic-denomination-revenue +.. http:patch:: /historic-denomination-revenue/$SERIAL_ID - Update the 'suppressed' field of an historic denomination revenue element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a historic denomination revenue element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -1610,7 +1796,7 @@ Denomination Pending This API is used to obtain a list of denomination pending -.. http:get:: /denomination-pending +.. http:get:: /monitoring/denomination-pending Get a list of denomination pending stored by the auditor. @@ -1641,13 +1827,23 @@ This API is used to obtain a list of denomination pending .. ts:def:: DenominationPending interface DenominationPending { - denom_pub_hash: HashCode; - denom_balance: Amount; - denom_loss: Amount; - num_issued: Integer; - denom_risk: Amount; - recoup_loss: Amount; - suppressed: boolean; + + + denom_pub_hash : HashCode; + + denom_balance : Amount; + + denom_loss : Amount; + + num_issued : Integer; + + denom_risk : Amount; + + recoup_loss : Amount; + + suppressed : boolean; + + } .. note:: @@ -1659,9 +1855,9 @@ This API is used to obtain a list of denomination pending This API is used to suppress select elements of denomination pending -.. http:patch:: /denomination-pending +.. http:patch:: /denomination-pending/$SERIAL_ID - Update the 'suppressed' field of an denomination pending element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a denomination pending element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -1680,9 +1876,12 @@ This API is used to suppress select elements of denomination pending Historic Reserve Summary ------------------------ -This API is used to obtain a list of historic reserve summary +This section highlights cases, where the exchanges expectation of the summary in a reserve +differs from its actual summary. + +#FIXME: this might be inaccurate -.. http:get:: /historic-reserve-summary +.. http:get:: /monitoring/historic-reserve-summary Get a list of historic reserve summary stored by the auditor. @@ -1713,10 +1912,17 @@ This API is used to obtain a list of historic reserve summary .. ts:def:: HistoricReserveSummary interface HistoricReserveSummary { - row_id: Integer; - start_date: Timestamp; - end_date: Timestamp; - reserve_profits: Amount; + + + row_id : Integer; + + start_date : Timestamp; + + end_date : Timestamp; + + reserve_profits : Amount; + + } .. note:: @@ -1728,9 +1934,9 @@ This API is used to obtain a list of historic reserve summary This API is used to suppress select elements of historic reserve summary -.. http:patch:: /historic-reserve-summary +.. http:patch:: /historic-reserve-summary/$SERIAL_ID - Update the 'suppressed' field of an historic reserve summary element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a historic reserve summary element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -1751,7 +1957,7 @@ Exchange Signkeys This API is used to obtain a list of exchange signkeys -.. http:get:: /exchange-signkeys +.. http:get:: /monitoring/exchange-signkeys Get a list of exchange signkeys stored by the auditor. @@ -1782,12 +1988,21 @@ This API is used to obtain a list of exchange signkeys .. ts:def:: ExchangeSignkeys interface ExchangeSignkeys { - exchange_pub: EddsaPublicKey; - master_sig: EddsaSignature; - ep_valid_from: Timestamp; - ep_expire_sign: Timestamp; - ep_expire_legal: Timestamp; - suppressed: boolean; + + + exchange_pub : EddsaPublicKey; + + master_sig : EddsaSignature; + + ep_valid_from : Timestamp; + + ep_expire_sign : Timestamp; + + ep_expire_legal : Timestamp; + + suppressed : boolean; + + } .. note:: @@ -1799,9 +2014,9 @@ This API is used to obtain a list of exchange signkeys This API is used to suppress select elements of exchange signkeys -.. http:patch:: /exchange-signkeys +.. http:patch:: /exchange-signkeys/$SERIAL_ID - Update the 'suppressed' field of an exchange signkeys element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of an exchange signkeys element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -1820,9 +2035,9 @@ This API is used to suppress select elements of exchange signkeys Wire Format Inconsistencies --------------------------- -This API is used to obtain a list of wire format inconsistencies +This section highlights cases, where the format of a wire transaction was malformed in some way. -.. http:get:: /wire-format-inconsistency +.. http:get:: /monitoring/wire-format-inconsistency Get a list of wire format inconsistencies stored by the auditor. @@ -1853,11 +2068,19 @@ This API is used to obtain a list of wire format inconsistencies .. ts:def:: WireFormatInconsistency interface WireFormatInconsistency { - row_id: Integer; - amount: Amount; - wire_offset: Integer; - diagnostic: string; - suppressed: boolean; + + + row_id : Integer; + + amount : Amount; + + wire_offset : Integer; + + diagnostic : string; + + suppressed : boolean; + + } .. note:: @@ -1869,9 +2092,9 @@ This API is used to obtain a list of wire format inconsistencies This API is used to suppress select elements of wire format inconsistencies -.. http:patch:: /wire-format-inconsistency +.. http:patch:: /wire-format-inconsistency/$SERIAL_ID - Update the 'suppressed' field of an wire format inconsistency element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a wire format inconsistency element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -1890,9 +2113,13 @@ This API is used to suppress select elements of wire format inconsistencies Refreshes Hanging ----------------- -This API is used to obtain a list of refreshes hanging +This section highlights cases, where refreshed (and then revealed) coins could not be found in an exchanges database. +This might happen, even if the exchange is operating correctly. In that case, the exchange might simply be slower than +the auditor. -.. http:get:: /refreshes-hanging +#FIXME: this might be inaccurate + +.. http:get:: /monitoring/refreshes-hanging Get a list of refreshes hanging stored by the auditor. @@ -1923,10 +2150,17 @@ This API is used to obtain a list of refreshes hanging .. ts:def:: RefreshesHanging interface RefreshesHanging { - row_id: Integer; - amount: Amount; - coin_pub: EddsaPublicKey; - suppressed: boolean; + + + row_id : Integer; + + amount : Amount; + + coin_pub : EddsaPublicKey; + + suppressed : boolean; + + } .. note:: @@ -1938,9 +2172,9 @@ This API is used to obtain a list of refreshes hanging This API is used to suppress select elements of refreshes hanging -.. http:patch:: /refreshes-hanging +.. http:patch:: /refreshes-hanging/$SERIAL_ID - Update the 'suppressed' field of an refreshes hanging element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a refreshes hanging element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -1959,9 +2193,22 @@ This API is used to suppress select elements of refreshes hanging Emergencies ----------- -This API is used to obtain a list of emergencies +This API is used to obtain a list of emergencies. + +Emergencies are errors where more coins were deposited than the +exchange remembers issuing. This usually means that the private keys +of the exchange were compromised (stolen or factored) and subsequently +used to sign coins off the books. If this happens, all coins of the +respective denomination that the exchange has redeemed so far may have +been created by the attacker, and the exchange would have to refund +all of the outstanding coins from ordinary users. Thus, the risk +exposure is the amount of coins in circulation for a particular +denomination and the maximum loss for the exchange from this type of +compromise. + +#FIXME: what is the difference between Emergencies and Emergencies by Count -.. http:get:: /emergency +.. http:get:: /monitoring/emergency Get a list of emergencies stored by the auditor. @@ -1992,13 +2239,23 @@ This API is used to obtain a list of emergencies .. ts:def:: Emergency interface Emergency { - row_id: Integer; - denompub_h: HashCode; - denom_risk: Amount; - denom_loss: Amount; - deposit_start: Timestamp; - deposit_end: Timestamp; - value: Amount; + + + row_id : Integer; + + denompub_h : HashCode; + + denom_risk : Amount; + + denom_loss : Amount; + + deposit_start : Timestamp; + + deposit_end : Timestamp; + + value : Amount; + + } .. note:: @@ -2010,9 +2267,9 @@ This API is used to obtain a list of emergencies This API is used to suppress select elements of emergencies -.. http:patch:: /emergency +.. http:patch:: /emergency/$SERIAL_ID - Update the 'suppressed' field of an emergency element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of an emergency element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -2031,9 +2288,16 @@ This API is used to suppress select elements of emergencies Closure Lags ------------ -This API is used to obtain a list of closure lags +This API is used to obtain a list of closure lags. + +Lag can be due to some component being behind in +executing transactions. This is usually either the exchange's aggregator, the +bank's wire transfer logic, or the synchronization of databases between +exchange and auditor. Significant lag may be indicative of fraud, while +moderate lag is indicative that the systems may be too slow to handle the +load. Small amounts of lag can occur in normal operation. -.. http:get:: /closure-lags +.. http:get:: /monitoring/closure-lags Get a list of closure lags stored by the auditor. @@ -2064,12 +2328,21 @@ This API is used to obtain a list of closure lags .. ts:def:: ClosureLags interface ClosureLags { - row_id: Integer; - amount: Amount; - deadline: Timestamp; - wtid: Integer; - account: string; - suppressed: boolean; + + + row_id : Integer; + + amount : Amount; + + deadline : Timestamp; + + wtid : Integer; + + account : string; + + suppressed : boolean; + + } .. note:: @@ -2081,9 +2354,9 @@ This API is used to obtain a list of closure lags This API is used to suppress select elements of closure lags -.. http:patch:: /closure-lags +.. http:patch:: /closure-lags/$SERIAL_ID - Update the 'suppressed' field of an closure lags element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a closure lags element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -2102,9 +2375,10 @@ This API is used to suppress select elements of closure lags Wire Out Inconsistencies ------------------------ -This API is used to obtain a list of wire out inconsistencies +This section highlights cases where the exchange's record about +outgoing wire transfers does not match with that of the bank. -.. http:get:: /wire-out-inconsistency +.. http:get:: /monitoring/wire-out-inconsistency Get a list of wire out inconsistencies stored by the auditor. @@ -2135,11 +2409,19 @@ This API is used to obtain a list of wire out inconsistencies .. ts:def:: WireOutInconsistency interface WireOutInconsistency { - row_id: Integer; - destination_account: string; - expected: Amount; - claimed: Amount; - suppressed: boolean; + + + row_id : Integer; + + destination_account : string; + + expected : Amount; + + claimed : Amount; + + suppressed : boolean; + + } .. note:: @@ -2151,9 +2433,9 @@ This API is used to obtain a list of wire out inconsistencies This API is used to suppress select elements of wire out inconsistencies -.. http:patch:: /wire-out-inconsistency +.. http:patch:: /wire-out-inconsistency/$SERIAL_ID - Update the 'suppressed' field of an wire out inconsistency element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a wire out inconsistency element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -2174,7 +2456,7 @@ Reserve Balance Summary Wrong Inconsistencies This API is used to obtain a list of reserve balance summary wrong inconsistencies -.. http:get:: /reserve-balance-summary-wrong-inconsistency +.. http:get:: /monitoring/reserve-balance-summary-wrong-inconsistency Get a list of reserve balance summary wrong inconsistencies stored by the auditor. @@ -2205,11 +2487,19 @@ This API is used to obtain a list of reserve balance summary wrong inconsistenci .. ts:def:: ReserveBalanceSummaryWrongInconsistency interface ReserveBalanceSummaryWrongInconsistency { - row_id: Integer; - reserve_pub: EddsaPublicKey; - exchange_amount: Amount; - auditor_amount: Amount; - suppressed: boolean; + + + row_id : Integer; + + reserve_pub : EddsaPublicKey; + + exchange_amount : Amount; + + auditor_amount : Amount; + + suppressed : boolean; + + } .. note:: @@ -2221,9 +2511,9 @@ This API is used to obtain a list of reserve balance summary wrong inconsistenci This API is used to suppress select elements of reserve balance summary wrong inconsistencies -.. http:patch:: /reserve-balance-summary-wrong-inconsistency +.. http:patch:: /reserve-balance-summary-wrong-inconsistency/$SERIAL_ID - Update the 'suppressed' field of an reserve balance summary wrong inconsistency element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a reserve balance summary wrong inconsistency element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:** @@ -2242,9 +2532,12 @@ This API is used to suppress select elements of reserve balance summary wrong in Row Minor Inconsistencies ------------------------- -This API is used to obtain a list of row minor inconsistencies +The section highlights inconsistencies, which are cause for concern, +but not necessarily point to a monetary loss (yet). + +#FIXME: might not be accurate -.. http:get:: /row-minor-inconsistencies +.. http:get:: /monitoring/row-minor-inconsistencies Get a list of row minor inconsistencies stored by the auditor. @@ -2275,10 +2568,17 @@ This API is used to obtain a list of row minor inconsistencies .. ts:def:: RowMinorInconsistencies interface RowMinorInconsistencies { - row_id: Integer; - row_table: Integer; - diagnostic: string; - suppressed: boolean; + + + row_id : Integer; + + row_table : Integer; + + diagnostic : string; + + suppressed : boolean; + + } .. note:: @@ -2290,9 +2590,9 @@ This API is used to obtain a list of row minor inconsistencies This API is used to suppress select elements of row minor inconsistencies -.. http:patch:: /row-minor-inconsistencies +.. http:patch:: /row-minor-inconsistencies/$SERIAL_ID - Update the 'suppressed' field of an row minor inconsistencies element according to :ts:type:`GenericUpdate`, stored by the auditor. + Update the 'suppressed' field of a row minor inconsistencies element with row_id $SERIAL_ID, according to :ts:type:`GenericUpdate`, stored by the auditor. **Response:**