Skip to main content
Alerts aggregate client and transaction data for regulatory reporting.

Alert Workflow

  1. Create an alert with the reporting period
  2. Add items (transactions) to the alert
  3. Validate the alert for completeness
  4. Generate the output (e.g., XML for Mexico)

Creating Alerts

With the base SDK, use nested scopeData format:
const alert = await sdk.alerts.create({
  scopeData: {
    MX: {
      actividadVulnerable: {
        AVI: {
          mesReportado: "202401", // January 2024
        },
      },
    },
  },
});

console.log(alert.id);
console.log(alert.status); // "draft"

Adding Alert Items

// Add a single item
const item = await sdk.alerts.addItem(alert.id, {
  transactionId: "txn_abc123",
});

// Add multiple items
const { added, items } = await sdk.alerts.addItems(alert.id, [
  { transactionId: "txn_abc123" },
  { transactionId: "txn_def456" },
]);

console.log(`Added ${added} items`);

Managing Alert Items

Get an Item

const item = await sdk.alerts.getItem(alert.id, "item_xyz");

Update an Item

const updated = await sdk.alerts.updateItem(alert.id, "item_xyz", {
  metadata: { reviewed: true },
});

Remove Items

// Remove one item
await sdk.alerts.removeItem(alert.id, "item_xyz");

// Remove multiple items
const { removed } = await sdk.alerts.removeItems(alert.id, [
  "item_a",
  "item_b",
]);

List Items

const { data, pagination } = await sdk.alerts.listItems(alert.id, {
  limit: 50,
});

for (const item of data) {
  console.log(item.id, item.transactionId);
}

Validating Alerts

const validation = await sdk.alerts.validateReport({
  alertId: alert.id,
  scope: "MX",
  actividadVulnerable: "AVI",
  defaults: {
    rfc: "EMP200101XXX",
    platformDomain: "https://example.com",
  },
});

if (validation.valid) {
  console.log("Alert is valid!");
} else {
  for (const error of validation.errors) {
    console.log(`- ${error.path}: ${error.message}`);
  }
}

Generating Alerts

Generate the output file (e.g., XML for Mexico):
const result = await sdk.alerts.generate({
  alertId: alert.id,
  scope: "MX",
  actividadVulnerable: "AVI",
  defaults: {
    rfc: "EMP200101XXX",
    platformDomain: "https://example.com",
  },
});

if (result.success) {
  console.log("Generated:", result.filename);
  // result.content contains the XML
}

Alert Status

StatusDescription
draftAlert is being prepared
validatingValidation in progress
validAlert passed validation
invalidAlert has validation errors
notApplicableNo reportable items for period

Retrieving Alerts

const alert = await sdk.alerts.retrieve("alert_abc123");

console.log(alert.id);
console.log(alert.status);
console.log(alert.createdAt);
You can also retrieve by externalId or metadata with retrieveByExternalId / retrieveByMetadata (see SDK reference).

Listing Alerts

const { data } = await sdk.alerts.list({
  filter: { status: "draft" },
  limit: 20,
});

for await (const alert of sdk.alerts.iterate()) {
  console.log(alert.id, alert.status);
}

Updating Alerts

const updated = await sdk.alerts.update("alert_abc123", {
  metadata: {
    preparedBy: "admin@example.com",
  },
});

Deleting Alerts

await sdk.alerts.delete("alert_abc123");

Alert Model Properties

PropertyTypeDescription
idstringUnique identifier
statusAlertStatusCurrent status
scopeDataobjectScope-specific data
itemCountnumberNumber of items
isDraftbooleanTrue if status is draft
isValidbooleanTrue if status is valid
canEditbooleanTrue if alert is editable
canGeneratebooleanTrue if can be generated
metadataobject | undefinedCustom metadata
createdAtDateCreation timestamp
updatedAtDateLast update timestamp

Alert Item Model Properties

PropertyTypeDescription
idstringUnique identifier
alertIdstringParent alert ID
transactionIdstring | undefinedTransaction ID
clientIdstring | undefinedClient ID
clientNamestring | undefinedClient name (denormalized)
transactionAmountnumber | undefinedAmount (denormalized)
transactionCurrencystring | undefinedCurrency (denormalized)
transactionDatestring | undefinedDate (denormalized)
isTransactionBasedbooleanTrue if based on transaction
isClientOnlybooleanTrue if client-only item
hasErrorsbooleanTrue if has validation errors
hasWarningsbooleanTrue if has warnings
validationErrorsarrayValidation errors
createdAtDateCreation timestamp
updatedAtDateLast update timestamp