SettleMint
Events

asset.issuance.provisional

An asset issuance transaction entered the reorg window and is provisionally visible.

An asset issuance transaction entered the reorg window and is provisionally visible.

Delivery contract

FieldValue
Event typeasset.issuance.provisional
Version1
Lifecycle stateprovisional
Counter-signed receipt requiredfalse
SDK typeWebhook.AssetIssuanceProvisionalV1

Related references:

  • idxr_asset
  • idxr_token

When to consume this event

Consume asset.issuance.provisional when your integration needs early notice that an asset issuance transaction has been indexed, but can tolerate the result still being inside the configured reorg depth.

Use this event to stage downstream asset, token, ledger, or reconciliation records. Keep those records reversible until DALP sends a later lifecycle signal. Do not show this provisional event as a customer-visible issuance confirmation.

Store these identifiers before triggering downstream side effects:

FieldWhy it matters
webhook-idDedupe delivery attempts from the webhook transport.
evt_idIdentify the DALP event in your event store.
request.idempotency_keyCorrelate the webhook to the originating API request when DALP includes a request record.
assetAddressAttach provisional state to the issued asset.
chainIdKeep the asset address scoped to the originating chain.
transactionHashLink the provisional event to the indexed transaction.

See webhook idempotency and on-chain outcome for retry, replay, payload-shape, and provisional-event handling.

Payload shape

Fat payloads include the issued asset address, chain ID, issuer address, raw issued quantity, and transaction hash. Thin payloads omit issuer. Fetch or store the issuer wallet identifier only when your integration is allowed to process that field.

quantity is a string so consumers can preserve the exact on-chain integer value without JavaScript number rounding.

Payload schema

{
  "type": "object",
  "properties": {
    "assetAddress": {
      "type": "string",
      "pattern": "^0x[a-fA-F0-9]{40}$"
    },
    "chainId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "issuer": {
      "type": "string",
      "pattern": "^0x[a-fA-F0-9]{40}$"
    },
    "quantity": {
      "type": "string"
    },
    "transactionHash": {
      "type": "string",
      "pattern": "^0x[a-fA-F0-9]{64}$"
    }
  },
  "required": [
    "assetAddress",
    "chainId",
    "issuer",
    "quantity",
    "transactionHash"
  ],
  "additionalProperties": false
}

TypeScript SDK example

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

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

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

if (result.event.type === "asset.issuance.provisional") {
  const event: Webhook.Event<"asset.issuance.provisional"> = 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_docs_asset_issuance_provisional_001" \
  -H "webhook-timestamp: 1778112000" \
  -H "webhook-signature: v1,docs-example-signature" \
  --data '{"evt_id":"evt_docs_asset_issuance_provisional_001","type":"asset.issuance.provisional","version":1,"lifecycle_state":"provisional","request":{"idempotency_key":"idem_01JZP7R5W8M9N0P1Q2R3S4T5"},"related":{"idxr_asset":"idxr_asset_example","idxr_token":"idxr_token_example"},"payload":{"assetAddress":"0x1111111111111111111111111111111111111111","chainId":537001,"issuer":"0x2222222222222222222222222222222222222222","quantity":"1000000000000000000000","transactionHash":"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}'

Version history

  • v1: Initial registry entry for asset.issuance.provisional.

Deprecation

This event type is not deprecated.

Manifest

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

On this page