Contents

POST /aml/$OFFICER_PUB/decision#

Make an AML decision. Triggers the respective action and records the justification.

Request:

The request must be an AmlDecisionRequest message.

Response

204 No content:

The AML decision has been executed and recorded successfully.

403 Forbidden:

The signature is invalid (or the AML officer not known).

404 Not found:

The normalized payto-address the decision was made for is unknown to the exchange.

409 Conflict:

The designated AML account is not enabled or a more recent decision was already submitted.

Details:

interface AmlDecisionRequest {

  // Human-readable justification for the decision.
  justification: string;

  // Hash of normalized payto-address of the account the decision is about.
  // Identifies a GNU Taler wallet or an affected bank account.
  h_payto: NormalizedPaytoHash;

  // Full payto address of the account the decision is about.
  // Optional. Must be given if the account is not yet
  // known to the exchange. If given, must match h_payto
  // (when normalized and then hashed).
  // @since protocol **v21**.
  payto_uri?: string;

  // What are the new rules?
  // New since protocol **v20**.
  new_rules: LegitimizationRuleSet;

  // What are the new account properties?
  // New since protocol **v20**.
  properties: AccountProperties;

  // Array of AML/KYC events to trigger for statistics.
  // Note that this information is not covered by the signature
  // (which is OK as events are just for statistics).
  // New since protocol **v24**.
  events?: string[];

  // Space-separated list of measures to trigger
  // immediately on the account.
  // Prefixed with a "+" to indicate that the
  // measures should be ANDed.
  // Should typically be used to give the user some
  // information or request additional information.
  //
  // At most one measure with a SKIP check may be specified.
  //
  // @since protocol **v21**.
  new_measures?: string;

  // True if the account should remain under investigation by AML staff.
  // @since protocol **v20**.
  keep_investigating: boolean;

  // Signature by the AML officer over a TALER_AmlDecisionPS.
  // Must have purpose TALER_SIGNATURE_MASTER_AML_KEY.
  officer_sig: EddsaSignature;

  // When was the decision made?
  decision_time: Timestamp;

  // KYC attributes uploaded by the AML officer
  // The object *must* contain high-entropy salt,
  // as the hash of the attributes will be
  // stored in plain text.
  attributes?: CustomerKycAttributes;

  // Expiration timestamp of the attributes.
  // Mandatory if attributes are present.
  attributes_expiration?: Timestamp;

}