SettleMint
Events

compliance.freeze.recalled

A compliance officer recalled an earlier compliance freeze event.

A compliance officer recalled an earlier compliance freeze event.

Delivery contract

FieldValue
Event typecompliance.freeze.recalled
Version1
Lifecycle staterecalled
Counter-signed receiptsRecommended for endpoints that consume this event
SDK typeWebhook.ComplianceFreezeRecalledV1

This row gives advice only. DALP waits for a counter-signed receipt only if the webhook endpoint's counterSignedReceipts value is true when DALP queues the delivery. When the value is false, a normal 2xx response completes the delivery.

Related references:

  • idxr_compliance_status
  • idxr_token

When to consume this event

Consume compliance.freeze.recalled when your integration previously acted on a compliance freeze and needs to clear, replace, or audit that local hold state. Treat the recalled event as the authoritative replacement for the event named by supersedes.

Use both envelope and payload identifiers during processing. Store evt_id to deduplicate delivery retries. Store request.idempotency_key when present, and store supersedes so replayed recalls update the same downstream record instead of creating a second release action.

The default thin payload shape strips subjectAddress and reasonCode from this event. Use the fat payload shape only for endpoints that are allowed to receive those fields. Protect the address and recall reason as sensitive compliance data.

The schema and examples below show the full payload shape. A default thin delivery omits subjectAddress and reasonCode.

See webhook idempotency and on-chain outcome for retry, replay, and lifecycle handling across pending, final, retracted, and recalled events.

Payload schema

{
  "type": "object",
  "properties": {
    "tokenAddress": {
      "type": "string"
    },
    "chainId": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "subjectAddress": {
      "type": "string"
    },
    "recalledBy": {
      "type": "string"
    },
    "reasonCode": {
      "type": "string"
    },
    "supersedes": {
      "type": "string",
      "pattern": "^evt_[a-zA-Z0-9]+$"
    }
  },
  "required": [
    "tokenAddress",
    "chainId",
    "subjectAddress",
    "recalledBy",
    "reasonCode",
    "supersedes"
  ],
  "additionalProperties": false
}

TypeScript SDK example

import { verifyWebhook } from "@settlemint/dalp-sdk/verify-webhook";
import type { Webhook } from "@settlemint/dalp-sdk";

const result = await verifyWebhook({
  rawBody,
  headers,
  secret: process.env.DALP_WEBHOOK_SECRET!,
});

if (!result.ok) {
  throw new Error(`Webhook verification failed: ${result.code}`);
}

if (result.event.type === "compliance.freeze.recalled") {
  const event: Webhook.Event<"compliance.freeze.recalled"> = result.event;
  console.log(event.payload);
}

curl example

curl -X POST https://consumer.example.com/dalp/webhooks \
  -H "content-type: application/json" \
  -H "webhook-id: evt_1575d327b1511d6f379b3558073d6323" \
  -H "webhook-timestamp: 1778112000" \
  -H "webhook-signature: v1,docs-example-signature" \
  --data '{"evt_id":"evt_1575d327b1511d6f379b3558073d6323","lifecycle_state":"recalled","supersedes":"evt_recalledFreeze001","payload":{"tokenAddress":"0x3333333333333333333333333333333333333333","chainId":537001,"subjectAddress":"0x4444444444444444444444444444444444444444","recalledBy":"compliance-ops","reasonCode":"manual-review-overturned","supersedes":"evt_recalledFreeze001"},"related":{"idxr_compliance_status":"idxr_compliance_status_example","idxr_token":"idxr_token_example"},"type":"compliance.freeze.recalled","version":1,"request":{"idempotency_key":"idem_01JZP7R5W8M9N0P1Q2R3S4T5"}}'

Version history

  • v1: Initial registry entry for compliance.freeze.recalled.

Deprecation

This event type is not deprecated.

Manifest

The machine-readable AsyncAPI entry is published in the DALP events manifest.

On this page