SettleMint
Tokens

Token conversion triggers

Read the conversion triggers on a DALP token, including the effective price after discount and cap, and the published, disabled, and republished lifecycle of each trigger.

When you submit a conversion, you reference a triggerId, and DALP prices and authorises that conversion against the named trigger. A conversion trigger is the priced, authorised round a holder converts against: it carries the round price, the discount and cap that produce the effective price, an expiry, and an active flag.

Use the two read-only endpoints below to discover the triggers on a token, read the effective price each one offers, and audit when a trigger was published, disabled, or republished. Neither endpoint publishes, disables, or executes against triggers.

List triggers

Call GET /api/v2/tokens/{tokenAddress}/conversion/triggers for the source token that carries the Conversion feature. The response uses the standard DALP paginated list shape.

curl --globoff "$DAPI_URL/api/v2/tokens/0x1111111111111111111111111111111111111111/conversion/triggers?page[limit]=50&filter[active]=true" \
  -H "X-Api-Key: $DALP_API_TOKEN"
{
  "data": [
    {
      "triggerId": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
      "denominationAsset": "0x3333333333333333333333333333333333333333",
      "roundPricePerShareWad": "1",
      "roundPricePerShareWadExact": "1000000000000000000",
      "effectivePriceWad": "0.95",
      "effectivePriceWadExact": "950000000000000000",
      "publishedAt": "2026-06-06T12:00:00.000Z",
      "expiresAt": "2026-07-06T12:00:00.000Z",
      "metadataHash": "0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
      "active": true,
      "disabledAt": null,
      "totalConversions": 12,
      "totalPrincipalConverted": "1000",
      "totalPrincipalConvertedExact": "1000000000000000000000"
    }
  ],
  "meta": {
    "total": 1,
    "facets": {}
  },
  "links": {
    "self": "/v2/tokens/0x1111111111111111111111111111111111111111/conversion/triggers?page%5Boffset%5D=0&page%5Blimit%5D=50"
  }
}

If the token has no attached Conversion feature in the indexed tenant scope, DALP returns an empty data array with total set to 0. Records are scoped to your current tenant; DALP returns nothing for tokens outside that scope.

Trigger fields

FieldMeaning
triggerIdOn-chain trigger identifier (bytes32 hex). Use it when submitting a conversion and when joining to conversion records.
denominationAssetAddress of the asset the trigger is priced in.
roundPricePerShareWad and roundPricePerShareWadExactPublished round price per share, in display and raw WAD (1e18) forms, before discount and cap.
effectivePriceWad and effectivePriceWadExactPrice a holder actually receives: min(roundPrice * (10000 - discountBps) / 10000, capPrice). DALP computes this server-side.
publishedAtWhen the trigger was published on-chain.
expiresAtWhen the trigger expires. An epoch-zero timestamp means the trigger does not expire.
metadataHashHash of the off-chain metadata document for the trigger, when present.
activeWhether the trigger is currently active. Disabled triggers stay in the list for history.
disabledAtWhen the trigger was disabled, or null while it is still active.
totalConversionsNumber of conversions executed using this trigger.
totalPrincipalConverted and totalPrincipalConvertedExactTotal principal converted using this trigger, in display and raw forms.

The effective price is the number to show a holder and to reconcile against, because the round price does not yet account for the configured discount and cap. The raw *Exact fields carry the precise on-chain values; use them for any arithmetic and the display fields for presentation in your UI.

Query controls

The list endpoint supports pagination, sorting, filtering, and facets using the standard JSON:API query pattern.

ControlSupported fieldsNotes
SortpublishedAt, expiresAtUse sort=-publishedAt to read the most recently published trigger first.
Filteractive, publishedAt, expiresAtUse filter[active]=true to drop disabled triggers. The active flag tracks whether a trigger was disabled, not whether it is still within its expiry window, so check expiresAt against the current time before treating a trigger as convertible.
FacetsactiveUse the active facet to count active versus disabled triggers in one response.
Paginationpage[limit], page[offset]Page through triggers instead of assuming every trigger fits in one response.

Read trigger lifecycle events

Call GET /api/v2/tokens/{tokenAddress}/conversion/events to read the append-only lifecycle of the token's conversion triggers. Each event records a point at which a trigger was published, disabled, or republished.

curl --globoff "$DAPI_URL/api/v2/tokens/0x1111111111111111111111111111111111111111/conversion/events?sort=-blockTimestamp" \
  -H "X-Api-Key: $DALP_API_TOKEN"
{
  "data": [
    {
      "triggerId": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
      "kind": "published",
      "eventIndex": 0,
      "denominationAsset": "0x3333333333333333333333333333333333333333",
      "roundPricePerShareWad": "1",
      "roundPricePerShareWadExact": "1000000000000000000",
      "expiresAt": "2026-07-06T12:00:00.000Z",
      "metadataHash": "0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
      "blockNumber": "184920",
      "blockTimestamp": "2026-06-06T12:00:00.000Z",
      "txHash": "0xdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
      "logIndex": 3
    }
  ],
  "meta": {
    "total": 1,
    "facets": {}
  },
  "links": {
    "self": "/v2/tokens/0x1111111111111111111111111111111111111111/conversion/events?sort=-blockTimestamp&page%5Boffset%5D=0&page%5Blimit%5D=50"
  }
}

Event fields

FieldMeaning
triggerIdThe trigger this event applies to.
kindThe lifecycle step: published, disabled, or republished.
eventIndexPosition of the event in the trigger's own lifecycle sequence.
denominationAsset, roundPricePerShareWad, roundPricePerShareWadExact, expiresAt, metadataHashThe terms recorded at the event. Pricing and expiry fields are populated for publish and republish, and can be null for a disable.
blockNumber, blockTimestamp, txHash, logIndexOn-chain coordinates of the event, for audit and ordering.

A republished event records that a trigger's terms were observed again on-chain; it appends a new row rather than mutating an earlier one. Each trigger carries a unique triggerId, so introducing new conversion terms means publishing a fresh trigger with its own identifier, not re-publishing an existing one. To rebuild the full history of a trigger, read its events in blockTimestamp order and treat the latest publish or republish as the terms in effect at any point you are auditing.

Query controls

ControlSupported fieldsNotes
Sortkind, blockTimestampThe default order is newest first. DALP uses block number and log index as tie-breakers.
Filterkind, blockTimestampUse filter[kind]=disabled to find when triggers were taken out of service.
FacetskindUse the kind facet to count publish, disable, and republish events.
Paginationpage[limit], page[offset]Page through the full history for audit exports.

SDK and CLI

The SDK and CLI expose the same read operations as the REST endpoints. Use the TypeScript client when you need typed responses, or the CLI for quick inspection and scripting.

const triggers = await client.token.conversionTriggers({
  params: { tokenAddress: "0x1111111111111111111111111111111111111111" },
  query: { filter: { active: true } },
});

const events = await client.token.conversionTriggerEvents({
  params: { tokenAddress: "0x1111111111111111111111111111111111111111" },
  query: { sort: "-blockTimestamp" },
});
dalp tokens conversion-triggers 0x1111111111111111111111111111111111111111
dalp tokens conversion-trigger-events 0x1111111111111111111111111111111111111111

Behaviour and failure cases

  • If the token has no attached Conversion feature, both endpoints return an empty paginated response rather than an error.
  • A disabled trigger stays in the trigger list with active set to false and a populated disabledAt, so historical pricing remains readable.
  • The events endpoint is append-only. A republished event is a new row recording a fresh on-chain observation of a trigger's terms, never an edit to an existing row.
  • Both endpoints read indexed data. The read does not make a live contract call, publish a trigger, or execute a conversion.

On this page