Skip to main content

Account Metadata

Every account on the M10 ledger can have associated metadata, and this AccountMetadata can be created either:

  • When an account is created, AccountMetadata can be included and then the record is automatically created.
  • After an account is created, AccountMetadata can be added.

In fact, multiple AccountMetadata records can be associated with an account on the ledger.

Model

The data model for AccountMetadata is defined in model.proto:

Identifiers: ISIN and DTI

isin and dti are optional security identifiers that can be attached to an issuance account's metadata. They enable discovery of tokenized instruments by their globally recognised codes.

  • ISIN (International Securities Identification Number, ISO 6166) – 12-character alphanumeric code, e.g. "US0378331005". The ledger validates the format and Luhn checksum.
  • DTI (Digital Token Identifier, ISO 24165-1) – 9-character code using consonants and digits only (no vowels), e.g. "X9T3R5V2B". The ledger validates the format.

Constraints:

  • Both fields are optional; an empty string clears the value.
  • Values are normalised to uppercase before validation and storage.
  • Each ISIN or DTI must be unique within a tenant scope (enforced at write time).
  • ISIN and DTI can only be set on root issuance accounts (depth 0, issuance: true).

Field validation:

FieldFormatLengthExample
isinUppercase alphanumeric + Luhn checksum (ISO 6166)12 chars"US0378331005"
dtiUppercase consonants and digits only, first char non-zero (ISO 24165-1)9 chars"X9T3R5V2B"

Issuer bank reference: issuer_bank_id

issuer_bank_id is an optional, caller-defined reference that ties an account to the bank that issues or services it. Unlike isin and dti, it is a free-form identifier rather than a standards-body code, and it can be attached to any account (not just root issuance accounts). It enables looking up accounts by the bank they belong to, for example when reconciling holdings against an external core banking system.

Constraints:

  • The field is optional; an empty string clears the value.
  • Values are normalised to uppercase before validation and storage.
  • Setting issuer_bank_id requires a valid ledger account id in id.
  • The value is not required to be unique; multiple accounts may share the same issuer_bank_id.

Field validation:

FieldFormatLengthExample
issuer_bank_idASCII alphanumeric ([A-Za-z0-9], normalised to uppercase)up to 64 chars"BANK001"

Create

Create an AccountMetadata record.

  • Rust
  • TypeScript
  • Dart
  • CLI
M10 REPLFOO

Update

Update an AccountMetadata record.

  • Rust
  • TypeScript
  • Dart
  • CLI
M10 REPLFOO

Delete

Delete an AccountMetadata record.

  • Rust
  • TypeScript
  • Dart
  • CLI
M10 REPLFOO


List (Find)

List AccountMetadata by --owner, --name (text or partial text), --public-name (text or partial text), --isin (exact match), --dti (exact match), or --issuer-bank-id (exact match).

  • Rust
  • TypeScript
  • Dart
  • CLI
M10 REPLFOO

Get

Get an AccountMetadata record.

  • Rust
  • TypeScript
  • Dart
  • CLI
M10 REPLFOO

HTTP/1

To submit requests over HTTP/1 instead of HTTP/2 with the SDKs, use the http option.