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
| Field | Value |
|---|---|
| Event type | asset.issuance.provisional |
| Version | 1 |
| Lifecycle state | provisional |
| Counter-signed receipt required | false |
| SDK type | Webhook.AssetIssuanceProvisionalV1 |
Related references:
idxr_assetidxr_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:
| Field | Why it matters |
|---|---|
webhook-id | Dedupe delivery attempts from the webhook transport. |
evt_id | Identify the DALP event in your event store. |
request.idempotency_key | Correlate the webhook to the originating API request when DALP includes a request record. |
assetAddress | Attach provisional state to the issued asset. |
chainId | Keep the asset address scoped to the originating chain. |
transactionHash | Link 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 forasset.issuance.provisional.
Deprecation
This event type is not deprecated.
Manifest
The machine-readable AsyncAPI entry is published in the DALP events manifest.