TypeScript SDK 3.1 to 3.2 mapping
A call-by-call map from the 3.1 TypeScript SDK to the 3.2 namespaced routes, flat arguments, narrowed responses, and retained client interpreters.
This note maps the calls an integrator moves from the 3.1 client to the 3.2 route tree. The route id is the operation id with its v2/ prefix removed, exactly as passed to execute. A route id is dot- or slash-separated, and either separator becomes a property step on the namespaced dalp.api.* client. The id is the stable name used by execute and the generated types. The examples show the argument shape after the transport envelope (params, query, or body) is removed.
| 3.1 call | 3.2 route id and call | Argument shape in 3.2 | Response shape in 3.2 | Removed? |
|---|---|---|---|---|
dalp.token.read({ params: { tokenAddress } }) | token/read → dalp.api.token.read({ assetId: tokenAddress }) | Flat object; path value is assetId | TokenV2ReadOutputSchema: data holds the token record; details and links sit beside it | No |
dalp.token.list({ query: {} }) | token/list → dalp.api.token.list() | Omit the argument when fields are optional; otherwise use flat page, sort, and filter | TokenV2ListOutputSchema: each item in data has a token member, discriminated by _tag (evm or canton) | No |
dalp.token.create({ body: { ... } }) | token/create → dalp.api.token.create({ ... }) | Body fields are top-level properties | A settled resource, or { transactionId, statusUrl } when the bounded wait returns 202 | No |
client.token.create(input, { context: { idempotencyKey } }) | token/create → dalp.api.token.create(input, { headers: { "Idempotency-Key": key } }) | Route input stays flat; the key is sent per call as a header (see Mutations and settlement) | The same settled-resource-or-handle union as other writes | No |
waitForTransaction(client, ...) after an accepted envelope (a package-root export in 3.1; import it from @settlemint/dalp-sdk/wait-for-transaction in 3.2) | transactionsV2.status → dalp.api.transactionsV2.status({ transactionId }) (or statusStream) | transactionId is the handle field | Write handles are { transactionId, statusUrl }; follow without resubmitting. Reading the status route directly is an alternative to the helper, not a replacement | No |
dalp.system.read({ params: { systemAddress } }) | systems.core.systemRead → dalp.api.systems.core.systemRead({ systemAddress }) | Flat path, query, and body fields | PlatformSystemReadRecord = PlatformSystemView | PlatformSystemSummaryView; narrow before whole-record members | No |
None: the route is new in 3.2 (GET /api/v2/participants/assumable) | party.participants.assumableList → dalp.api.party.participants.assumableList({ ... }) | Flat object | AssumableParticipantRead = AssumableParticipant | AssumableParticipantSummary; narrow first | No |
dalp.user.list({ query: {} }) | party.users.list → dalp.api.party.users.list({ ... }) | Flat page, sort, and filter fields | UserListReadItem = UserListMember | UserListSummaryItem; narrow first | No |
None: the route is new in 3.2 (GET /api/v2/tokens/{assetId}/corporate-actions/{corporateActionId}) | token/getCorporateAction → dalp.api.token.getCorporateAction({ assetId, corporateActionId }) | Flat object | token_getCorporateAction_Response (the route has no summary selector) | No |
createDalpBundlerClient and the other bundler exports of the @settlemint/dalp-sdk root | No 3.2 route; use POST /bundler/{chainId} JSON-RPC | N/A | N/A | Yes: removed |
DALP_CONTRACT_ERROR_CODES, DalpContractErrorCode, and the @settlemint/dalp-sdk/plugins subpath | Generated types from @settlemint/dalp-sdk/types; every 3.1 contract error code is an entry in dalpErrorCatalog from the package root | N/A | N/A | Yes: removed |
requestValidation and responseValidation client plugins | No SDK validation-plugin configuration; response schemas are checked automatically | N/A | N/A | Yes: removed |
createDalpAuthClient, DalpAuthClient, DalpAuthClientConfig, DalpAuthError, DalpAuthOperation, DalpAuthResult, and WalletAuthEndpointPath from the @settlemint/dalp-sdk root | The same names from @settlemint/dalp-sdk/auth | DalpAuthClientConfig no longer has sessionToken; it adds authSurface, runtime, and passkey | N/A | Yes: removed from the root |
verifyWebhook, toStandardWebhookSecret, VerifyWebhookInput, WebhookVerificationFailure, and WebhookVerificationResult from the root | The same names from @settlemint/dalp-sdk/verify-webhook | N/A | N/A | Yes: removed from the root |
DalpTransactionWaitError, WaitForTransactionOptions, and WaitForTransactionStatus from the root | The same names from @settlemint/dalp-sdk/wait-for-transaction | N/A | N/A | Yes: removed from the root |
createDalpPlatformClient, DalpPlatformClient, and DalpPlatformClientConfig (one factory that returned { dapi, auth, cookieStore }) | No combined client: create the route client with createDalpClient from the root and the auth client with createDalpAuthClient from @settlemint/dalp-sdk/auth | Each factory takes its own options: CreateDalpClientOptions and DalpAuthClientConfig | N/A | Yes: removed |
DalpClientConfig | CreateDalpClientOptions from the root, passed to createDalpClient | url becomes baseUrl; organizationId and idempotencyKey move into context; there is no headers, requestValidation, or responseValidation option | N/A | Yes: removed |
DalpCookieStore | makeCookieStore() returns a CookieStoreShape; createCookieStoreFetch stays in the root and takes it | header and isEmpty are methods in 3.2: call store.header() and store.isEmpty() | N/A | Yes: removed |
CUSTOM_ERROR_CODES, ErrorCode, DAPI_ERROR_IDS, and DapiErrorId | isDalpErrorCode(code) and the DalpErrorCode type; the id of a code is dalpErrorCatalog.entries[code].id, and a thrown DalpApiError carries it as id | The 3.2 code set is not the 3.1 set: check a stored 3.1 code with isDalpErrorCode instead of assuming it exists | N/A | Yes: removed |
The 3.2 response unions are deliberate. A selector such as view=summary or a fields[...] projection can return a narrowed row, so a consumer must check the discriminant or otherwise narrow the variant before reading members of the full record. A request without a selector still returns the whole record.
The table and the list below it include each 3.1 migration family represented by the SDK's public client and its removed root exports and /plugins subpath. The contract schema re-exports, such as the @settlemint/dalp-sdk/contracts path, have no row because no published 3.x release up to 3.1.26 offered them as an import path: the package exposed only the root, /types, and /plugins. To get a generated type, import it from @settlemint/dalp-sdk/types. The bundler client exports are gone; use the chain-scoped JSON-RPC mount at POST /bundler/{chainId}. The Promise client and the Effect client remain available, with the latter imported from @settlemint/dalp-sdk/effect.
These 3.1 root exports have no 3.2 equivalent:
bigDecimalSerializer,bigIntSerializer,timestampSerializer, anddalpSerializers. The 3.2 client options have no serializer setting. To handle a single value, usedecodeBigInt,decodeBigDecimal, andencodeBigDecimalfrom@settlemint/dalp-sdk/scalars.DapiPublicError,isDapiPublicError,decodeDapiErrorResponseBody,getDapiPublicErrorFromResponseBody, andcreateDalpSdkErrorFromDapiPublicError. The 3.2 client turns every non-2xx response into a thrownDalpApiError, so you do not decode the error body yourself. Test for it withisDalpApiErrorand read itscodeandid.
For the complete route reference and write-settlement examples, see Calling routes, Mutations and settlement, and The Effect surface.
TypeScript SDK
The client keeps its namespaced shape with types from the platform's own routes, one flat argument per call, a bounded wait on writes, and query factories.
Response caching
Read responses carry a version tag, so a client can ask whether anything changed instead of fetching the payload, and read-your-write moved into the platform.