SettleMint
Reference

Instrument templates API

List, read, create, update, publish, and delete instrument templates through the DALP Platform API and SDK, and hide or show templates per organisation with the isHidden filter and toggle.

An instrument template is a reusable issuance pattern for the Asset Designer. Each template groups an asset class, a deployable asset type, required token features, feature defaults, and the metadata fields DALP collects during issuance. DALP seeds a set of system templates and lets each organisation add its own.

Use these endpoints when an integration manages templates directly, instead of through the Console. For the operator workflow, see Instrument templates and Create a custom template.

System and organisation templates

Each template carries an isSystem flag.

  • System templates are seeded by DALP and shared across organisations. Any caller with read access can list and read them, but their definition cannot be changed through this API.
  • Organisation templates belong to the organisation that created them. Only that organisation can read, update, publish, or delete its own templates.

A template is identified by its id and addressed by a slug. The slug is unique per organisation. A template is created as a draft and becomes immutable in key fields once published.

Endpoints

EndpointUse it for
GET /api/v2/settings/asset-type-templatesList instrument templates in the active organisation.
POST /api/v2/settings/asset-type-templatesCreate a draft instrument template.
GET /api/v2/settings/asset-type-templates/{id}Read one instrument template.
PUT /api/v2/settings/asset-type-templates/{id}Update a template, or hide and show it per organisation.
PUT /api/v2/settings/asset-type-templates/{id}/publishPublish a draft template.
DELETE /api/v2/settings/asset-type-templates/{id}Delete a template.

Read responses use the DALP single-resource envelope with data and links.self. List responses use the collection envelope with data, meta, and pagination links. Delete responses return { "data": null }.

Required roles

OperationRoles (any of)
List, readadmin, systemManager, tokenManager
Create, update, publish, deleteadmin, systemManager

Set the participant and wallet context with the standard request headers before calling these endpoints. See Request headers.

Template fields

Each instrument template returns these fields:

FieldTypeDescription
idstringStable identifier for the template.
namestringDisplay name, 1 to 255 characters.
slugstringURL-safe identifier, unique within the organisation.
descriptionstring or nullOptional description.
assetClassstringSlug of the asset class this template belongs to.
assetClassIdstring or nullOwning asset class identifier. null for templates that use the system class mapping.
typeIdstringConcrete asset type slug, such as bond or deposit.
baseAssetTypestringDeployable base asset type that determines pricing fields.
isSystembooleantrue for DALP-seeded system templates, false for organisation templates.
isDraftbooleantrue while the template is a draft, false once published. System templates are not drafts.
isHiddenbooleantrue when the active organisation has hidden this template. Computed per organisation.
hiddenFromSidebarbooleantrue when the template is hidden from the Asset Designer sidebar. Mutable on all templates.
versionnumberIncrements on each definition change. Visibility changes do not bump the version.
requiredFeaturesarrayToken features the template requires.
metadataSchemaobject or nullMetadata fields the Asset Designer collects during issuance.
featureConfigobject or nullDefault feature settings the template applies.
organizationIdstring or nullOwning organisation. null for shared system templates.
createdBystring or nullUser who created the template.
createdAtstringCreation timestamp.
updatedAtstringLast update timestamp.

List templates

GET /api/v2/settings/asset-type-templates returns the system templates plus the active organisation's templates.

The list supports pagination, global search, sorting by name, createdAt, or updatedAt, and filtering by assetClass, typeId, isSystem, isDraft, or isHidden. Default sort is by name, with system templates ordered first.

By default the list returns both visible and hidden templates. Add filter[isHidden]=false to return only the templates visible to the active organisation, or filter[isHidden]=true to return only the hidden set. isHidden is filterable but not sortable, because it is computed per organisation rather than stored on the template.

curl --globoff "https://your-platform.example.com/api/v2/settings/asset-type-templates?filter[isHidden]=false&sort=name" \
  -H "x-api-key: YOUR_API_KEY"
{
  "data": [
    {
      "id": "f0c1a2b3-4d5e-6789-abcd-ef0123456789",
      "name": "Senior secured bond",
      "slug": "senior-secured-bond",
      "description": null,
      "assetClass": "fixed-income",
      "assetClassId": null,
      "typeId": "bond",
      "baseAssetType": "bond",
      "isSystem": false,
      "isDraft": false,
      "isHidden": false,
      "hiddenFromSidebar": false,
      "version": 2,
      "requiredFeatures": [],
      "metadataSchema": null,
      "featureConfig": null,
      "organizationId": "org_123",
      "createdBy": "user_456",
      "createdAt": "2026-01-01T00:00:00.000Z",
      "updatedAt": "2026-01-01T00:00:00.000Z"
    }
  ],
  "meta": {
    "total": 1,
    "facets": { "isSystem": [{ "value": "false", "count": 1 }] }
  },
  "links": {
    "self": "/v2/settings/asset-type-templates?filter[isHidden]=false&sort=name&page[offset]=0&page[limit]=50",
    "first": "/v2/settings/asset-type-templates?filter[isHidden]=false&sort=name&page[offset]=0&page[limit]=50",
    "prev": null,
    "next": null,
    "last": "/v2/settings/asset-type-templates?filter[isHidden]=false&sort=name&page[offset]=0&page[limit]=50"
  }
}

Create, read, and delete

POST /api/v2/settings/asset-type-templates creates a draft template. Send a name, a typeId, a baseAssetType, and an optional description, assetClassId, requiredFeatures, metadataSchema, or featureConfig. DALP derives the slug from the name.

GET /api/v2/settings/asset-type-templates/{id} returns one template. The active organisation can read its own templates and any system template.

DELETE /api/v2/settings/asset-type-templates/{id} removes an organisation template.

PUT /api/v2/settings/asset-type-templates/{id}/publish transitions a draft to published. A published template locks its typeId and baseAssetType so existing deployments keep working.

Update a template

PUT /api/v2/settings/asset-type-templates/{id} updates an organisation template. Send only the fields you want to change. Any definition change bumps version. A published template cannot change its typeId or baseAssetType.

System templates are read-only for their definition. A request that changes name, description, type, asset class, features, or metadata on a system template returns DALP-0161. Only visibility preferences can be changed on a system template.

Hide and show a template

Hiding a template removes it from the Asset Designer selection step so operators can no longer pick it for new assets. Assets already issued from the template are unaffected. Visibility is tracked per organisation: when you hide a template, only your organisation's visible-only views drop it, and other organisations are unaffected.

Send isHidden on the update endpoint to toggle visibility. The CLI does not expose this toggle; use the API or SDK. Unlike definition edits, visibility can be changed on any template the organisation can see, including shared system and default templates:

  • isHidden: true hides the template for the active organisation.
  • isHidden: false shows it again.
curl -X PUT "https://your-platform.example.com/api/v2/settings/asset-type-templates/f0c1a2b3-4d5e-6789-abcd-ef0123456789" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "isHidden": true }'

The response returns the template with its updated isHidden value. A visibility toggle does not bump version. You can combine isHidden with definition fields in one request on an organisation template. On a system template, send isHidden alone, because definition fields are rejected.

To list only the templates your integration should offer for issuance, request the visible published set with filter[isHidden]=false&filter[isDraft]=false. To review and restore hidden templates, request filter[isHidden]=true.

Errors

Error IDStatusWhen it happensRecovery
DALP-0091404A read, update, publish, or delete could not find the template in scope.Verify the ID, ownership scope, and indexing state, then retry.
DALP-0161409A definition edit targeted a system template.System definitions cannot be modified. Create an organisation template, or send only isHidden.
DALP-0463409The name collides with an existing organisation template.Choose a unique template name, or update the existing template instead.

For the full catalog, see the Platform API error reference.

SDK

The SDK exposes these operations under settings.assetTypeTemplates. Hiding and showing a template is available through the API and SDK.

const list = await client.settings.assetTypeTemplates.list({ query: {} });

const visibleOnly = await client.settings.assetTypeTemplates.list({
  query: { filter: { isHidden: "false" } },
});

const one = await client.settings.assetTypeTemplates.read({ params: { id: list.data[0].id } });

await client.settings.assetTypeTemplates.update({
  params: { id: one.data.id },
  body: { isHidden: true },
});

SDK errors expose the same id, status, and retryable fields as the REST envelope. See the SDK reference and error handling.

On this page