Contents

GET /aml/$OFFICER_PUB/accounts#

Request:

Accept:

The client may specify the desired MIME-type for the result. Supported are the usual “application/json”, but also “text/csv” (RFC 4180) and “application/vnd.ms-excel” (XML of Excel 2003).

Taler-AML-Officer-Signature:

The client must provide Base-32 encoded EdDSA signature with $OFFICER_PRIV, affirming the desire to obtain AML data. Note that this is merely a simple authentication mechanism, the details of the request are not protected by the signature.

This endpoint was introduced in this form in protocol v31.

Query Parameters:
  • limitOptional. takes value of the form N (-N), so that at most N values strictly older (younger) than start are returned. Defaults to -20 to return the last 20 entries (before start).

  • offsetOptional. Row number threshold, see delta for its interpretation. Defaults to INT64_MAX, namely the biggest row id possible in the database.

  • investigationOptional. If set to yes, only return accounts that are under AML investigation, if no only accounts that are not under investigation. Do not give (or use “all”) to see all accounts regardless of investigation status.

  • openOptional. If set to yes, only return accounts that are open, which means they crossed some initial limit and now have custom rules. Do not give (or use “all”) to see all accounts regardless of open status.

  • high_riskOptional. If set to yes, only return accounts that were flagged as high risk. Do not give (or use “all”) to see all accounts regardless of risk status.

Response:

200 OK:

The response will be an AmlAccountsResponse message (if the client’s header “Accept” was “application/json”). Other encodings may differ in the exact returned data and format.

204 No content:

There are no accounts at all (within the specified constraints).

403 Forbidden:

The signature is invalid.

404 Not found:

The designated AML account is not known.

409 Conflict:

The designated AML account is not enabled.

Details:

interface AmlAccountsResponse {

  // Array of customer accounts matching the query.
  accounts: CustomerAccountSummary[];
}
interface CustomerAccountSummary {

  // Which payto-address is this record about.
  // Identifies a GNU Taler wallet or an affected bank account.
  h_payto: NormalizedPaytoHash;

  // Full payto URL of the account that the decision is
  // about.
  full_payto: string;

  // True if the account was assessed as being high risk.
  high_risk: boolean;

  // Latest comments about the account (if any).
  comments?: string;

  // Row of the account in the exchange tables. Useful to filter
  // by offset.
  rowid: Integer;

  // When was the account opened? "never" if it was never opened.
  open_time: Timestamp;

  // When was the account opened? "never" if it was never closed.
  close_time: Timestamp;

  // True if the account is under investigation by AML staff
  // after this decision.
  to_investigate: boolean;

}
// All fields in this object are optional. The actual
// properties collected depend fully on the discretion
// of the exchange operator;
// however, some common fields are standardized
// and thus described here.
interface AccountProperties {

  // True if this is a politically exposed account.
  // Rules for classifying accounts as politically
  // exposed are country-dependent.
  pep?: boolean;

  // True if this is a sanctioned account.
  // Rules for classifying accounts as sanctioned
  // are country-dependent.
  sanctioned?: boolean;

  // True if this is a high-risk account.
  // Rules for classifying accounts as at-risk
  // are exchange operator-dependent.
  high_risk?: boolean;

  // Business domain of the account owner.
  // The list of possible business domains is
  // operator- or country-dependent.
  business_domain?: string;

  // Is the client's account currently frozen?
  is_frozen?: boolean;

  // Was the client's account reported to the authorities?
  was_reported?: boolean;

}