SettleMint
Reference

Asset class definitions API, CLI, and SDK reference

List, create, read, update, and delete organisation asset class definitions through the DALP Platform API, CLI, and SDK, and hide or unhide classes through the API and SDK.

An asset class definition is a catalog entry that groups instrument templates and deployed assets under one label, such as fixed-income, equity, or a custom class your organisation adds. DALP seeds a set of system classes and lets each organisation add its own.

Use these endpoints when an integration manages the asset class catalog directly, instead of through the Console. For the operator workflow and how classes feed asset creation, see Instrument templates and Create a custom template.

System and custom classes

Each class carries an isSystem flag.

  • System classes are seeded by DALP and shared across organisations. Any caller with read access can list and read them, but they cannot be updated or deleted through this API.
  • Custom classes belong to the organisation that created them. Only that organisation can read, update, or delete its custom classes.

A class is identified by its id and addressed by a slug. The slug is unique per organisation: two classes in the same organisation cannot share a name-derived or explicit slug.

Endpoints

EndpointUse it for
GET /api/v2/settings/asset-class-definitionsList asset class definitions in the active organisation.
POST /api/v2/settings/asset-class-definitionsCreate a custom asset class definition.
GET /api/v2/settings/asset-class-definitions/{id}Read one asset class definition.
PUT /api/v2/settings/asset-class-definitions/{id}Update a custom asset class definition.
DELETE /api/v2/settings/asset-class-definitions/{id}Delete a custom asset class definition.

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, deleteadmin, systemManager

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

Definition fields

Each asset class definition returns these fields:

FieldTypeDescription
idstringStable identifier for the asset class definition.
namestringDisplay name, 1 to 255 characters.
descriptionstring or nullOptional description, up to 1000 characters.
slugstringURL-safe kebab-case identifier, unique within the organisation.
isSystembooleantrue for DALP-seeded system classes, false for organisation classes.
isHiddenbooleantrue when the active organisation has hidden this class. Computed per organisation.
organizationIdstring or nullOwning organisation. null for shared system classes.
createdBystring or nullUser who created the class.
createdAtstringCreation timestamp.
updatedAtstringLast update timestamp.

List classes

GET /api/v2/settings/asset-class-definitions returns the system classes plus the active organisation's custom classes.

The list supports pagination, global search, sorting by name, createdAt, or updatedAt, and filtering by isSystem or isHidden. Default sort is by name. Facets are returned for isSystem so a client can show system and custom counts side by side.

By default the list returns both visible and hidden classes. Add filter[isHidden]=false to return only the classes visible to the active organisation, or filter[isHidden]=true to return only the hidden set. isHidden is filterable but not sortable.

curl --globoff "https://your-platform.example.com/api/v2/settings/asset-class-definitions?filter[isSystem]=false&sort=name" \
  -H "x-api-key: YOUR_API_KEY"
{
  "data": [
    {
      "id": "f0c1a2b3-4d5e-6789-abcd-ef0123456789",
      "name": "Derivatives",
      "description": null,
      "slug": "derivatives",
      "isSystem": false,
      "isHidden": false,
      "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-class-definitions?filter[isSystem]=false&sort=name&page[offset]=0&page[limit]=50",
    "first": "/v2/settings/asset-class-definitions?filter[isSystem]=false&sort=name&page[offset]=0&page[limit]=50",
    "prev": null,
    "next": null,
    "last": "/v2/settings/asset-class-definitions?filter[isSystem]=false&sort=name&page[offset]=0&page[limit]=50"
  }
}

Create a custom class

POST /api/v2/settings/asset-class-definitions creates a custom class for the active organisation. Send a name, an optional description, and an optional slug.

If you omit slug, DALP derives it from name by converting to kebab-case. A supplied slug must already be kebab-case.

curl -X POST "https://your-platform.example.com/api/v2/settings/asset-class-definitions" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Derivatives",
    "description": "Financial instruments whose value derives from underlying assets"
  }'
{
  "data": {
    "id": "f0c1a2b3-4d5e-6789-abcd-ef0123456789",
    "name": "Derivatives",
    "description": "Financial instruments whose value derives from underlying assets",
    "slug": "derivatives",
    "isSystem": false,
    "isHidden": false,
    "organizationId": "org_123",
    "createdBy": "user_456",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "updatedAt": "2026-01-01T00:00:00.000Z"
  },
  "links": {
    "self": "/v2/settings/asset-class-definitions/f0c1a2b3-4d5e-6789-abcd-ef0123456789"
  }
}

If the slug already exists for the organisation on create, the request returns DALP-0480 with HTTP 409. This also applies when the slug is auto-derived from name and that derived slug collides. Duplicate display names are accepted as long as the slug is distinct. Choose a different name or supply an explicit unique slug, or reuse the existing class.

Read, update, and delete a class

GET /api/v2/settings/asset-class-definitions/{id} returns one class. The active organisation can read its own custom classes and any system class.

PUT /api/v2/settings/asset-class-definitions/{id} updates name, description, or slug on a custom class. Send only the fields you want to change. A request with no changed fields returns the current class unchanged.

DELETE /api/v2/settings/asset-class-definitions/{id} removes a custom class.

System classes are read-only for metadata: an update of name, description, or slug returns DALP-0156 and a delete returns DALP-0155, both with HTTP 409. To diverge from a system class, create a custom class instead.

Hide and unhide a class

Hiding a class removes it from asset-creation surfaces in the Console and from any list that requests visible-only results. The API list endpoint returns both visible and hidden classes by default, so to exclude hidden classes from an integration's own list call, pass filter[isHidden]=false. Visibility is tracked per organisation: when you hide a class, only your organisation's visible-only views drop it, and other organisations are unaffected.

Send isHidden on the update endpoint to toggle visibility. Unlike metadata edits, visibility can be changed on any class the organisation can see, including system classes:

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

The response returns the class with its updated isHidden value. You can combine isHidden with metadata fields in one request on a custom class; on a system class, send isHidden alone, because metadata fields are rejected.

Errors

Error IDStatusWhen it happensRecovery
DALP-0480409The slug collides with an existing class in the organisation.Choose a different slug, or reuse the existing class.
DALP-0155409A delete targeted a system class.System classes cannot be deleted. Remove a custom class instead.
DALP-0156409A metadata update (name, description, or slug) targeted a system class.System metadata cannot be modified. Create a custom class instead, or send only isHidden to change visibility.
DALP-0088404A read could not find the class in the organisation or system scope.Verify the ID and that the class belongs to your organisation.
DALP-0089404A delete could not find a custom class owned by the organisation.Verify the ID and that the class belongs to your organisation.
DALP-0090404An update could not find the class, for example after a concurrent delete.Re-read the class list and retry against a current ID.

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

CLI

The dalp CLI exposes the create, read, list, update, and delete operations through the settings command group. Hiding and unhiding is available through the API and SDK.

dalp settings asset-class-definitions-list
dalp settings asset-class-definitions-read <id>
dalp settings asset-class-definitions-create --name "Derivatives" --description "..." --slug derivatives
dalp settings asset-class-definitions-update <id> --name "Updated name"
dalp settings asset-class-definitions-delete <id>

SDK

The SDK exposes the same operations under settings.assetClassDefinitions.

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

const created = await client.settings.assetClassDefinitions.create({
  body: { name: "Derivatives", description: "..." },
});

const one = await client.settings.assetClassDefinitions.read({ params: { id: created.data.id } });

await client.settings.assetClassDefinitions.update({
  params: { id: created.data.id },
  body: { name: "Updated name" },
});

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

await client.settings.assetClassDefinitions.delete({ params: { id: created.data.id } });

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

On this page