SettleMint
Reference

Asset class definitions

List, create, read, update, and delete organisation asset class definitions through the DALP Platform API, CLI, 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.
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. Default sort is by name. Facets are returned for isSystem so a client can show system and custom counts side by side.

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,
      "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,
    "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: an update returns DALP-0156 and a delete returns DALP-0155, both with HTTP 409. To diverge from a system class, create a custom class instead.

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-0156409An update targeted a system class.System classes cannot be modified. Create a custom class instead.
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 same operations through the settings command group.

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.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